Java 如何使用 BouncyCastle?

How to use BouncyCastle with Java?

我已经阅读了 Bouncy Castle 网站上的说明,并在 Java 密码学、工具和技术中阅读了如何添加安全提供程序,但我仍然停留在基本用法上。

我有 JAR:bcprov-jdk15on-167.jar(在我的“当前目录”中)

和一些代码:

// import what for Bouncy Castle?

public class DigestDemo
{
   public static String byteArrayToHex(byte[] a)
   {
      StringBuilder sb = new StringBuilder(a.length * 2);
      for(byte b: a)
        sb.append(String.format("%02x", b));
      return sb.toString();
   }

   public static byte[] computeDigest(String digestName, byte[] data) throws NoSuchProviderException, 
    NoSuchAlgorithmException
   {
       MessageDigest digest = MessageDigest.getInstance(digestName, "BC");
       digest.update(data);
       return digest.digest();
   }

   public static void main(String[] args) throws Exception
   {
       Security.addProvider(new BouncyCastleProvider());
       System.out.println(byteArrayToHex(computeDigest("SHA-256", "Hello World!".getBytes())));
   }
}

但我对如何 运行 简单示例感到困惑。

说明说 JAR 必须在类路径中(最新的 Java 版本 jre/lib/ext 不再受支持)。所以我在我的当前目录中准备好使用 -cp 命令行选项 运行。无论我为导入提供什么似乎都不起作用,因为 javac 找不到包。

问题是如何编译才能使用 Bouncy Castle?

导入行是:

import org.bouncycastle.jce.provider.BouncyCastleProvider;

然后我可以使用 javac 以与 java 相同的方式指定类路径。

因此,使用 Powershell:

javac -cp .\bcprov-ext-jdk15on-167.jar .\DigestDemo.java

和 运行:

java -cp ";.\bcprov-ext-jdk15on-167.jar;." DigestDemo