在我的应用程序中,我正在使用SHA1和RSA验证使用概率签名方案(PSS)签名的文件的数字签名。签名是在BouncyCastle的帮助下在J2SE中创建的。
在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版本)?
谢谢!
答案 0 :(得分:3)
我设法让PSS签名工作的唯一方法是将我的签名提供商转换为Spongy Castle。
快速操作方法:
在签名类的某处添加以下行
static { Security.addProvider(new org.spongycastle.jce.provider.BouncyCastleProvider()); }
在getInstance()
中用SC替换您的BC签名签名= Signature.getInstance(“SHA1withRSA / PSS”,“SC”);
缺点:你的二进制文件将包含1.5mb的奖金。
答案 1 :(得分:0)
我面临同样的问题。通过将Bouncy Castle移植到Android是唯一的方法吗?