美文网首页
Java使用AES加解密

Java使用AES加解密

作者: 黑咔 | 来源:发表于2020-01-31 13:55 被阅读0次

源码


import org.apache.commons.codec.binary.Base64;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;

public class AesEncrypt {

    public static void main(String[] args) throws Exception {
        // 原文
        String data = "AES加密";
        // 定义key
        // String key = "12345678123456781234567812345678";
        String key = generateAESKey();

        String encryptCotent = aesEncrypt(data, key);
        System.out.println("密文:" + encryptCotent);
        String decryptCotent = aesDecrypt(encryptCotent, key);
        System.out.println("明文:" + decryptCotent);

    }

    /**
     * AES加密
     *
     * @param content 明文
     * @param aesKey  密钥
     * @return 加密后的密文内容
     * @throws Exception
     */
    public static String aesEncrypt(String content, String aesKey) throws Exception {

        // 创建加密规则
        byte[] bytesKey = Base64.decodeBase64(aesKey.getBytes("utf-8"));
        SecretKeySpec secretKeySpec = new SecretKeySpec(bytesKey, "AES");

        // 创建加密对象
        Cipher cipher = Cipher.getInstance("AES");

        // 进行加密初始化
        cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);

        // 调用加密方法
        // 参数为原文的字节数组
        byte[] result = cipher.doFinal(content.getBytes("utf-8"));
        return Base64.encodeBase64String(result);
    }


    /**
     * AES解密
     *
     * @param content 密文
     * @param aesKey  密钥
     * @return 解密后的明文内容
     * @throws Exception
     */
    public static String aesDecrypt(String content, String aesKey) throws Exception {

        byte[] bytesKey = Base64.decodeBase64(aesKey.getBytes("utf-8"));

        // 解密规则
        SecretKeySpec secretKey = new SecretKeySpec(bytesKey, "AES");

        Cipher cipher = Cipher.getInstance("AES");
        cipher.init(Cipher.DECRYPT_MODE, secretKey);
        byte[] result = cipher.doFinal(Base64.decodeBase64(content.getBytes("utf-8")));
        return new String(result);
    }

    /**
     * 生成AES密钥
     */
    public static String generateAESKey() throws Exception {
        // 密钥生成器对象
        KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
        keyGenerator.init(128);

        // 生成AES密钥
        SecretKey key = keyGenerator.generateKey();

        // 获取AES密钥的字节数组
        byte[] keyExternal = key.getEncoded();
        return Base64.encodeBase64String(keyExternal);
    }
}
        <!-- base64依赖 -->
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.15</version>
        </dependency>

相关文章

网友评论

      本文标题:Java使用AES加解密

      本文链接:https://www.haomeiwen.com/subject/ntsdyctx.html