【发布时间】:2010-01-07 17:19:38
【问题描述】:
我正在尝试将 BouncyCastle 与 android 一起使用来实现 ECDH 和 EL Gamal。我添加了 bouncycastle jar 文件 (bcprov-jdk16-144.jar) 并编写了一些适用于我的计算机 jvm 的代码,但是当我尝试将其移植到我的 android 应用程序时它会抛出:
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: INFO/dalvikvm(1054): DexOpt: 不解决模棱两可的类 'Lorg/bouncycastle/asn1/ASN1Encodable;'
01-07 17:17:42.548: DEBUG/dalvikvm(1054): DexOpt: 不验证 'Lorg/bouncycastle/asn1/ess/OtherSigningCertificate;': 多个定义
我做错了什么?
【问题讨论】:
-
好的,我现在尝试将 bouncycastle 添加为单独的 .jar 文件,现在当我检查可用的算法时,它说 ECDH 和 El Gamal 都可用,但仍然会出现完全相同的错误和异常
-
请更新您的问题并告诉我们您做了什么来解决它。
标签: android encryption bouncycastle