【发布时间】:2020-07-03 06:31:42
【问题描述】:
我使用 OpenSSL aes-256-gcm 加密了一个文件。由于命令行不支持 aes-256-gcm,我已经安装了 LibreSSL,并且可以使用以下命令来加密文件的数据。
openssl enc -aes-256-gcm -K 61616161616161616161616161616161 -iv 768A5C31A97D5FE9 -e -in file.in -out file.out
我需要用 Java 解密 file.out 的数据,但我做不到。
示例代码:
// Get Cipher Instance
Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding");
String key = "61616161616161616161616161616161";
byte[] IV = "768A5C31A97D5FE9".getBytes();
// Create SecretKeySpec
SecretKeySpec keySpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES");
// Create GCMParameterSpec
GCMParameterSpec gcmParameterSpec = new GCMParameterSpec(128, IV);
// Initialize Cipher for DECRYPT_MODE
cipher.init(Cipher.DECRYPT_MODE, keySpec, gcmParameterSpec);
// Perform Decryption
byte[] decryptedText = cipher.doFinal(cipherText); // for the data by reading file.out
但是,我收到一个异常说 javax.crypto.AEADBadTagException: Tag mismatch!
【问题讨论】:
标签: java encryption aes-gcm