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中都相同。
您是否添加了以下行?
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
默认的Java安全性不包含Bouncy Castle实现,因此您需要先将Bouncy Castle Provider添加到内存中可用的提供程序列表中,然后才能使用它。
http://www.java2s.com/Code/Java/Security/SecureRandomSHA1PRNG.htm