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

AES で暗号化されたデータと一緒にRSA で暗号化された AES キーを受け取っていると思いますが、2 つの暗号化のうちの 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 に答える