AES加密

AES (Advanced Encryption Standard) 是一种广泛使用的对称加密算法。在Java中,你可以使用 javax.crypto 包来实现AES加密和解密。下面使用一个Java代码示例,展示了如何使用AES加密和解密字符串。

首先,请确保你的开发环境中已经包含了Java SE环境,并且你熟悉基本的Java编程概念。

步骤 1: 导入必要的包

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;

步骤 2: 编写加密和解密的方法

public class AESExample {

    private static final String ALGORITHM = "AES";

    public static void main(String[] args) {
        try {
            // 生成密钥
            SecretKey secretKey = generateKey();

            // 原始文本
            String plainText = "Hello, world!";

            // 加密
            byte[] encryptedBytes = encrypt(plainText.getBytes(), secretKey);
            String encryptedString = Base64.getEncoder().encodeToString(encryptedBytes);
            System.out.println("Encrypted: " + encryptedString);

            // 解密
            byte[] decryptedBytes = decrypt(encryptedBytes, secretKey);
            String decryptedString = new String(decryptedBytes);
            System.out.println("Decrypted: " + decryptedString);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static SecretKey generateKey() throws NoSuchAlgorithmException {
        KeyGenerator keyGen = KeyGenerator.getInstance(ALGORITHM);
        keyGen.init(128); // AES 使用 128 位密钥
        return keyGen.generateKey();
    }

    private static byte[] encrypt(byte[] data, SecretKey secretKey) throws Exception {
        Cipher cipher = Cipher.getInstance(ALGORITHM);
        cipher.init(Cipher.ENCRYPT_MODE, secretKey);
        return cipher.doFinal(data);
    }

    private static byte[] decrypt(byte[] encryptedData, SecretKey secretKey) throws Exception {
        Cipher cipher = Cipher.getInstance(ALGORITHM);
        cipher.init(Cipher.DECRYPT_MODE, secretKey);
        return cipher.doFinal(encryptedData);
    }
}

代码解释:

  1. 导入必要的包:

    • javax.crypto.Cipher: 用于执行加密和解密操作。
    • javax.crypto.KeyGenerator: 用于生成加密密钥。
    • javax.crypto.SecretKey: 表示密钥对象。
    • javax.crypto.spec.SecretKeySpec: 用于创建密钥规范。
    • java.security.NoSuchAlgorithmException: 如果找不到指定的算法,则抛出此异常。
    • java.util.Base64: 用于编码和解码Base64格式的数据。
  2. 生成密钥:

    • 使用 KeyGenerator 生成一个128位的AES密钥。
  3. 加密方法:

    • 初始化Cipher为加密模式,并使用密钥进行加密。
    • 使用 doFinal 方法完成加密过程。
  4. 解密方法:

    • 初始化Cipher为解密模式,并使用相同的密钥进行解密。
    • 使用 doFinal 方法完成解密过程。
  5. 主方法:

    • 生成密钥。
    • 加密和解密测试字符串,并打印结果。

这个例子中,我们使用了Base64编码将加密后的字节数组转换为字符串形式,方便显示和传输。在实际应用中,你可能需要根据自己的需求调整代码,例如存储密钥、处理错误等。

请注意,在生产环境中,你需要妥善管理密钥,避免硬编码密钥到代码中,并考虑使用更安全的方式存储和管理密钥,例如使用密钥管理系统。在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

svygh123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值