java - 充气城堡没有这样的供应商异常

标签 java android bouncycastle

我已将 bouncy caSTLe jar 文件添加到我在 android 和 java 中的应用程序类路径中。 这是我在两者中都使用过的代码。但它似乎无法识别提供商“BC”。

SecureRandom sr1=new SecureRandom().getInstance("SHA1PRNG", "BC");
      System.out.println(sr1.getProvider());
      sr1.setSeed(12);
      byte[] a=new byte[0];
      sr1.nextBytes(a);
      int ai=a[0];
      System.out.println(ai);


它在 android 和 java 中抛出以下异常:

java.security.NoSuchProviderException: no such provider: BC


如何解决这个问题?
我没有在策略文件中添加提供者。这样做之后我得到以下异常。

java.security.NoSuchAlgorithmException: no such algorithm: SHA1PRNG for provider
 BC<br>

这是否意味着充气城堡没有提供“SHA1PRNG”算法的实现?但是我导入 bouncy caSTLe 的全部原因是为了在 android 和 java 中有一个共同的提供者,这样使用相同种子生成的随机数序列在 android 和 java 中都是相同的。

最佳答案

您是否添加了以下行?

Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());

默认的 Java Security 不包含 Bouncy CaSTLe 实现,因此您需要先将 Bouncy CaSTLe Provider 添加到内存中可用的提供程序列表中,然后才能使用它。

http://www.java2s.com/Code/Java/Security/SecureRandomSHA1PRNG.htm

关于java - 充气城堡没有这样的供应商异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9660967/

相关文章:

java - 调用 Spring 服务并通过构造函数发送参数

java - 报告生成器 Java

java - 我如何比较Java中的2个方法?

java - 转换 PGP 公钥

.net - 如何从商店导出不可导出的私钥

java - 向 PDF 添加时间戳会损坏文件

java - Primefaces 扩展 CK 编辑器始终呈现为文本区域

java - com.google 无法解析为类型

android - getheight() 和 getmeasuredheight() 的区别

android - 如何在 recyclerview 项目之间设置相等的边距