我正在尝试在Android上使用BouncyCastle来实现ECDH和EL Gamal。我已经添加了BouncyCastle的jar文件(bcprov-jdk16-144.jar)和写一些代码,我的电脑JVM工作但是当我试着将它移植到我的Android应用程序,它抛出:未提供Bouncycastle加密算法
java.security.NoSuchAlgorithmException: KeyPairGenerator ECDH implementation not found
样本的代码是:
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
java.security.KeyPairGenerator keyGen = org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator.getInstance("ECDH", "BC");
ECGenParameterSpec ecSpec = new ECGenParameterSpec("prime192v1");
keyGen.initialize(ecSpec, SecureRandom.getInstance("SHA1PRNG"));
KeyPair pair = keyGen.generateKeyPair();
PublicKey pubk = pair.getPublic();
PrivateKey prik = pair.getPrivate();
我然后写一个简单的程序,看看有什么加密算法都可以跑在我的Android模拟器,并在我的电脑JVM中的代码为:
Set<Provider.Service> rar = new org.bouncycastle.jce.provider.BouncyCastleProvider().getServices();
Iterator<Provider.Service> ir = rar.iterator();
while(ir.hasNext())
System.out.println(ir.next().getAlgorithm());
在Android上,我没有得到任何EC算法,而通常在我的电脑上运行它没有问题。
01-07 17:17:42.548:信息/ dalvikvm(1054):DexOpt:
编制进行了大量的充气城堡班时,我也越来越以下两个错误不解决含糊类'Lorg/BouncyCastle的/ ASN1/ASN1Encodable;'
01-07 17:17:42.548:DEBUG/dalvikvm(1054):DexOpt:未验证 'Lorg/BouncyCastle的/ ASN 1/ESS/OtherSigningCertificate;':多重定义
我在做什么错?
好,我现在尝试添加BouncyCastle的作为一个单独的.jar文件,现在当我检查什么算法是可用的它说ECDH和El Gamal都可用,但仍然发生完全相同的错误和异常 – 2010-01-08 16:34:27
你有没有解决这个问题? – mcorley 2011-05-18 03:50:36
请更新你的问题,并告诉我们你做了什么来解决它。 – 2012-10-01 13:40:54