我已将 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/