![](/img/trans.png)
[英]Error decrypting message encrypted using AES/GCM/NoPadding in Android
[英]Decrypting a message encrypted using a hashed key
我有一個問題,我需要解密使用AES = 256加密的消息。 我已經提供了密鑰和向量。 我必須使用SHA-256對提供的密鑰進行哈希處理,然后使用此哈希對消息進行加密。 解密代碼運行良好,但結果不是原始的String
。 結果: ?m?>? ???????z?p???>??<3?
?m?>? ???????z?p???>??<3?
(確切的文本是不同的,但是在復制和粘貼之后,它是不同的)。
我的代碼如下:
try {
MessageDigest digest = MessageDigest.getInstance("SHA-256");
byte[] hashBytes = digest.digest("someKey".getBytes(ENCODING_UTF8));
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
IvParameterSpec iv = new IvParameterSpec("somevector".getBytes(ENCODING_UTF8));
SecretKeySpec skeySpec = new SecretKeySpec(hashBytes, AES);
cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);
byte[] cipherText = cipher.doFinal(plainText.getBytes(ENCODING_UTF8));
encrypted = EACECryptoUtils.base64Encode(cipherText);
Cipher decryptCipher = Cipher.getInstance(TRANSFORMATION_TYPE);
IvParameterSpec decryptIV = new IvParameterSpec("somevector".getBytes(ENCODING_UTF8));
SecretKeySpec decryptSkeySpec = new SecretKeySpec(hashBytes, AES);
decryptCipher.init(Cipher.DECRYPT_MODE, decryptSkeySpec, decryptIV);
byte[] original = cipher.doFinal(EACECryptoUtils.base64Decode(encrypted));
decrypted = new String(original);
} catch (Exception e) {
log.error(new LogRecord(FUNCTION_NAME + "Exception while encrypting the data", e));
throw e;
}
}
byte []原始= cipher.doFinal(EACECryptoUtils。
我相信您應該使用decryptCipher
而不是cipher
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.