gpt4 book ai didi

android - Android 2.3以后PSS签名校验失败

转载 作者:搜寻专家 更新时间:2023-11-01 09:13:02 24 4
gpt4 key购买 nike

在我的应用程序中,我正在使用 SHA1 和 RSA 验证使用概率签名方案 (PSS) 签名的文件的数字签名。签名是在 J2SE 中借助 BouncyCaSTLe 创建的。

到目前为止,此验证在 Android 应用程序中运行良好(例如 2.1、2.2)。在 Android 2.3 设备/模拟器上测试应用程序时,我收到 NoSuchAlgorithmException。

NoSuchAlgorithmException: Signature SHA1withRSA/PSS implementation not found 

我用来验证签名的相关代码如下:

Signature signature = Signature.getInstance("SHA1withRSA/PSS", "BC");
signature.setParameter(new PSSParameterSpec(64));
signature.initVerify(thePublicKey);
signature.update(theMessage.getBytes());
boolean signatureIsValid = signature.verify(theSignature);

自 Android 2.2 以来发生了什么,为什么算法“SHA1withRSA/PSS”从“BC”提供程序中删除?

有人有替代方案吗(最好适用于所有 Android 版本)?

谢谢!

最佳答案

我设法使 PSS 签名正常工作的唯一方法是将我的签名提供程序切换到 Spongy CaSTLe。

快速操作:

  1. 下载 SpongyCaSTLe JAR 文件并将其放入您的 libs/项目文件夹中。我使用了来自 APG 的 JAR:http://code.google.com/p/android-privacy-guard/source/browse/lib/bcprov-jdk16-146.jar?name=apg_service
  2. 如果使用 Eclipse,请将文件添加到您的项目,方法是转到其属性 -> Java 构建路径 -> 库 -> 添加 JAR... -> 选择文件
  3. 在您的签名类中的某处添加以下行

    静态{ Security.addProvider(new org.spongycaSTLe.jce.provider.BouncyCaSTLeProvider());

  4. 在 getInstance() 中用 SC 替换你的 BC

    签名signature = Signature.getInstance("SHA1withRSA/PSS", "SC");

缺点:您的二进制文件将包含额外的 1.5mb。

关于android - Android 2.3以后PSS签名校验失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6871340/

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