基于java的256位aes密码加密

  • Post category:other

以下是关于基于Java的256位AES密码加密的完整攻略,包含两个示例。

基于Java的256位AES密码加密

在Java中,我们可以使用AES(Advanced Encryption Standard)算法来加密数据。以下是一个基于Java的256位AES密码加密的示例:

import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;

public class AES256Encryption {

    private static final String ALGORITHM = "AES/CBC/PKCS5Padding";
    private static final String SECRET_KEY = "0123456789abcdef0123456789abcdef";
    private static final String IV_PARAMETER = "0123456789abcdef";

    public static String encrypt(String data) throws Exception {
        SecretKeySpec secretKeySpec = new SecretKeySpec(SECRET_KEY.getBytes(), "AES");
        IvParameterSpec ivParameterSpec = new IvParameterSpec(IV_PARAMETER.getBytes());
        Cipher cipher = Cipher.getInstance(ALGORITHM);
        cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, ivParameterSpec);
        byte[] encryptedData = cipher.doFinal(data.getBytes());
        return Base64.getEncoder().encodeToString(encryptedData);
    }

    public static String decrypt(String encryptedData) throws Exception {
        SecretKeySpec secretKeySpec = new SecretKeySpec(SECRET_KEY.getBytes(), "AES");
        IvParameterSpec ivParameterSpec = new IvParameterSpec(IV_PARAMETER.getBytes());
        Cipher cipher = Cipher.getInstance(ALGORITHM);
        cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, ivParameterSpec);
        byte[] decryptedData = cipher.doFinal(Base64.getDecoder().decode(encryptedData));
        return new String(decryptedData);
    }

    public static void main(String[] args) throws Exception {
        String data = "Hello, world!";
        String encryptedData = encrypt(data);
        String decryptedData = decrypt(encryptedData);
        System.out.println("Original data: " + data);
        System.out.println("Encrypted data: " + encryptedData);
        System.out.println("Decrypted data: " + decryptedData);
    }
}

在这个示例中,我们首先定义了一个名为AES256Encryption的类。然后,我们定义了一个加密算法和密钥,以及一个初始化向量。接下来,我们定义了两个方法:encrypt和decrypt,用于加密和解密数据。最后,我们在main方法中使用这两个方法来加密和解密数据,并将结果打印出来。

结论

在Java中,我们可以使用AES算法来加密数据。这些技术可以帮助我们保护敏感数据,以便只有授权的用户才能访问它们。