aes-256-cbc java

AES-256-CBC是一种对称加密算法,它使用256位的密钥对数据进行加密和解密,并使用CBC模式进行填充。在Java中,可以使用JCE(Java Cryptography Extension)提供的API来实现AES-256-CBC加密和解密。

下面是一个简单的Java代码示例,演示如何使用AES-256-CBC加密和解密:

import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;
public class AesUtil {
    private static final String KEY_ALGORITHM = "AES";
    private static final String CIPHER_ALGORITHM = "AES/CBC/PKCS5Padding";
    private static final String CHARSET_NAME = "UTF-8";
    private static final String IV = "1234567890abcdef"; // 16 bytes initialization vector
    public static String encrypt(String plainText, String key) throws Exception {
        SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(CHARSET_NAME), KEY_ALGORITHM);
        IvParameterSpec iv = new IvParameterSpec(IV.getBytes(CHARSET_NAME));
        Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
        cipher.init(Cipher.ENCRYPT_MODE, secretKey, iv);
        byte[] encryptedBytes = cipher.doFinal(plainText.getBytes(CHARSET_NAME));
        return Base64.getEncoder().encodeToString(encryptedBytes);
    public static String decrypt(String cipherText, String key) throws Exception {
        SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(CHARSET_NAME), KEY_ALGORITHM);
        IvParameterSpec iv = new IvParameterSpec(IV.getBytes(CHARSET_NAME));
        Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
        cipher.init(Cipher.DECRYPT_MODE, secretKey, iv);
        byte[] cipherBytes = Base64.getDecoder().decode(cipherText);
        byte[] decryptedBytes = cipher.doFinal(cipherBytes);
        return new String(decryptedBytes, CHARSET_NAME);

在上面的代码中,encrypt方法接受一个明文和一个密钥作为输入,并返回使用AES-256-CBC算法加密后的Base64编码字符串。decrypt方法接受一个密文和一个密钥作为输入,并返回解密后的明文字符串。

在使用该代码之前,请确保您已经正确安装并配置了Java Cryptography Extension (JCE)。您还需要选择一个合适的密钥,并确保您在不同的应用程序中使用不同的密钥来保持安全性。

希望这个代码示例能帮助您理解如何在Java中使用AES-256-CBC算法进行加密和解密。如果您有任何问题,请随时与我联系。

  • 5年前
  •