关于RSA解密失败记录
在做公司项目时候,同事使用java加密一段数据,让我进行一下测试,是否能解密成功,但是研究一上午发无果,最后老大指出java默认解密和Android默认解密的Padding不同,特此记录,以免后续再犯!
Android 默认是 :RSA/None/Nopadding
Java 默认是:RSA/None/PKCS1Padding
padding不同,Android端设置padding即可 贴出代码
// prikey是密钥的byte[]
PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec(
prikey1
);
try {
KeyFactory keyf = KeyFactory.getInstance("RSA");
RSAPrivateKey privkey= (RSAPrivateKey) keyf.generatePrivate(priPKCS8);
// here padding
Cipher cipher=Cipher.getInstance("RSA/None/PKCS1Padding");
cipher.init(Cipher.DECRYPT_MODE, privkey);
byte[] decData=cipher.doFinal(data);
Log.i("javaTest", "--"+new String(decData));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}