将byte []转换为AES密钥

时间:2012-04-30 08:25:07

标签: java

我有一个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?

1 个答案:

答案 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规范可能会有所不同,具体取决于加密过程中的指定方式。

希望这有帮助。