Java如何AES256-CBC解密
时间: 2023-07-05 21:36:56 浏览: 109
在Java中,可以使用javax.crypto包中的类来进行AES256-CBC解密。下面是一个示例代码:
```java
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;
public class AES256CBCDecryptor {
public static String decrypt(String cipherText, String key, String iv) throws Exception {
SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES");
IvParameterSpec ivParameterSpec = new IvParameterSpec(iv.getBytes("UTF-8"));
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, ivParameterSpec);
byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(cipherText));
return new String(decryptedBytes);
}
public static void main(String[] args) throws Exception {
String cipherText = "tX9IbG8QkZ0vJ/4G5Uq+2Q==";
String key = "01234567890123456789012345678901";
String iv = "0123456789012345";
String plainText = decrypt(cipherText, key, iv);
System.out.println("Plain text: " + plainText);
}
}
```
在代码中,我们首先定义了一个decrypt方法,该方法接受待解密的密文、密钥和初始化向量,并返回解密后的明文。该方法中,我们首先使用密钥和初始化向量创建SecretKeySpec和IvParameterSpec对象。然后,我们使用AES/CBC/PKCS5Padding算法创建一个Cipher对象,并使用init方法初始化为解密模式。最后,我们调用doFinal方法对密文进行解密,并将解密后的字节数组转换为字符串。
在main方法中,我们使用示例密文、密钥和初始化向量调用decrypt方法,并输出解密后的明文。请注意,示例代码中的密钥和初始化向量都是16字节长的字符串,因为AES256-CBC需要256位长密钥和128位长初始化向量。实际应用中,您应该使用更长的、随机生成的密钥和初始化向量来保证加密的安全性。
阅读全文
相关推荐


















