錯(cuò)誤代碼事例
?public static byte[] decryptByPublicKey(byte[] data, String key)? ?throws Exception {
// 對(duì)密鑰解密
byte[] keyBytes =decryptBASE64(key);
// 取得公鑰
X509EncodedKeySpec x509KeySpec =new X509EncodedKeySpec(keyBytes);
KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
Key publicKey = keyFactory.generatePublic(x509KeySpec);
// 對(duì)數(shù)據(jù)解密
?Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
?cipher.init(Cipher.DECRYPT_MODE, publicKey);
return cipher.doFinal(data);
}
正確事例
private static StringRSAC ="RSA/ECB/PKCS1Padding";
?public static byte[] decryptByPublicKey(byte[] data, String key)? ?throws Exception {
// 對(duì)密鑰解密
byte[] keyBytes =decryptBASE64(key);
// 取得公鑰
?X509EncodedKeySpec x509KeySpec =new X509EncodedKeySpec(keyBytes);
KeyFactorykeyFactory= KeyFactory.getInstance(KEY_ALGORITHM);
Key publicKey =keyFactory.generatePublic(x509KeySpec);
// 對(duì)數(shù)據(jù)解密
Cipher cipher = Cipher.getInstance(RSAC);
cipher.init(Cipher.DECRYPT_MODE, publicKey);
return cipher.doFinal(data);
}