gpt4 book ai didi

android - 未提供 BouncycaSTLe 加密算法

转载 作者:太空宇宙 更新时间:2023-11-03 11:46:13 33 4
gpt4 key购买 nike

我正在尝试将 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;': 多个定义

我做错了什么?

最佳答案

你可能想要 Spongy Castle - 我对 Bouncy CaSTLe 进行的重新打包,专门针对 Android。如此处所述:

http://code.google.com/p/android/issues/detail?id=3280

...不幸的是,Android 平台包含了 Bouncy CaSTLe 的缩减版本,由于类加载器冲突,这也使得安装更新版本的库变得困难 - 即使您添加了完整的 BC jar,您也无法获得您添加的其他类(class)。

Spongy CaSTLe 完全替代了 Android 附带的 Bouncy CaSTLe 加密库的残缺版本。有几个小的变化可以让它在 Android 上运行:

  • 所有包名称都已从 org.bouncycaSTLe.* 移至 org.spongycaSTLe.* - 因此没有类加载器冲突
  • Java 安全 API 提供程序名称现在是 SC 而不是 BC

关于android - 未提供 BouncycaSTLe 加密算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2022183/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com