我有一个AESkey,它由公钥加密,后来由私钥解密
Cipher cipher = Cipher.getInstance("RSA");
PrivateKey privateKey = keyPair.getPrivate();
// decrypt the ciphertext using the private key
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decryptedText = cipher.doFinal(theBytes);
theBytes是一个包含加密AESkey的byte [],问题是如何将decryptedText转换回AESkey?
答案 0 :(得分:5)
我相信您正在接收RSA加密的AES密钥以及一些AES加密数据,您仍然需要执行2次加密中的第二次。正确?
因此,无论如何,您可以从字节数组中加载一个键。
SecretKeySpec secretKeySpec = new SecretKeySpec(decryptedText, "AES");
随后你会做这样的事情来解密AES加密的数据,'加密':
Cipher cipherAes = Cipher.getInstance("AES/CBC/PKCS7Padding");
cipherAes.init(Cipher.DECRYPT_MODE, secretKeySpec);
byte[] decryptedBytes = cipherAes.doFinal(encrypted);
String decryptedString = new String(decryptedBytes);
/CBC/PKCS7Padding
规范可能会有所不同,具体取决于加密过程中的指定方式。
希望这有帮助。