2

我有一个用公钥加密的 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?

4

1 回答 1

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具体取决于加密期间的指定方式。

希望这可以帮助。

于 2012-04-30T08:33:46.577 回答