java AES加密算法

AES(Advanced Encryption Standard,高级加密标准)是一种广泛使用的对称加密算法,适用于需要高效数据安全性的场景。

在Java中实现AES加密通常涉及以下几个步骤和关键点:

一、准备工作

        环境准备:确保你的Java开发环境(如JDK)已安装,并使用一个IDE(如Eclipse, IntelliJ IDEA)进行开发。
        导入相关库:Java 6及以后版本内置了支持AES加密的库,位于javax.crypto包下,无需额外导入第三方库。

二、实现步骤

1. 生成密钥

        AES支持128、192、256位的密钥长度。使用KeyGenerator类生成密钥:

import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import java.security.SecureRandom;

public class AESExample {
    public static SecretKey generateKey(int keySize) throws Exception {
        KeyGenerator keyGen = KeyGenerator.getInstance("AES");
        SecureRandom secureRandom = new SecureRandom();
        keyGen.init(keySize, secureRandom);
        return keyGen.generateKey();
    }
}

2. 加密数据

        使用Cipher类进行加密操作。首先初始化Cipher实例为加密模式,并指定密钥:

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

public static String encrypt(String plainText, SecretKey secretKey) throws Exception {
    Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); // CBC模式,PKCS5Padding填充
    byte[] iv = new byte[16]; // 初始向量 (Initialization Vector),需随机生成并安全传输
    SecureRandom random = new SecureRandom();
    random.nextBytes(iv);
    IvParameterSpec ivSpec = new IvParameterSpec(iv);
    cipher.init(Cipher.ENCRYPT_MODE, secretKey, ivSpec);

    byte[] encryptedBytes = cipher.doFinal(plainText.getBytes(StandardCharsets.UTF_8));
    // 结果通常需要Base64编码以便文本传输
    return Base64.getEncoder().encodeToString(encryptedBytes);
}

3. 解密数据

        解密过程与加密类似,但需要将Cipher实例初始化为解密模式,并使用相同的密钥和初始向量:

public static String decrypt(String cipherText, SecretKey secretKey, IvParameterSpec ivSpec) throws Exception {
    Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
    cipher.init(Cipher.DECRYPT_MODE, secretKey, ivSpec);

    byte[] decodedBytes = Base64.getDecoder().decode(cipherText);
    byte[] decryptedBytes = cipher.doFinal(decodedBytes);
    return new String(decryptedBytes, StandardCharsets.UTF_8);
}

4. 注意事项

        安全性:密钥和IV(如果使用CBC模式)必须安全地存储和传输。

        模式和填充:上述示例使用了CBC模式和PKCS5Padding填充,根据需求也可以选择其他模式和填充方式。

        错误处理:实际应用中应添加适当的异常处理逻辑。

        性能:AES加密相对快速,但在处理大量数据或高性能要求的应用中,应考虑其对系统资源的影响。

  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值