弹力城堡没有此类提供者例外

Ash*_*win 1 java android bouncycastle

我已经在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);
Run Code Online (Sandbox Code Playgroud)


它在android和java中都引发以下异常:

java.security.NoSuchProviderException: no such provider: BC
Run Code Online (Sandbox Code Playgroud)


如何纠正呢?
我没有在策略文件中添加提供程序。之后,我得到以下异常。

java.security.NoSuchAlgorithmException: no such algorithm: SHA1PRNG for provider
 BC<br>
Run Code Online (Sandbox Code Playgroud)

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

k2z*_*ger 5

您是否添加了以下行?

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

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

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