采用AES加密算法对密码进行加密解密

该博客展示了如何使用AES算法进行加密和解密操作。代码示例中,作者实现了AESUtil类,包含encrypt和decrypt方法,分别用于加密和解密字符串。该类依赖于Spring的Base64Utils以及Java的Cipher和SecretKeySpec类。在main方法中,演示了对特定密码的加密和解密过程。
摘要由CSDN通过智能技术生成

采用AES加密算法对密码进行加密解密

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.Base64Utils;

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

/**
 * @author t
 */
public class AESUtil {

    private static final String KEY_ALGORITHM = "AES";
    private static final String DEFAULT_CIPHER_ALGORITHM = "AES/ECB/PKCS5Padding";//默认的加密算法

    private final static Logger LOGGER = LoggerFactory.getLogger(AESUtil.class);

    /**
     * AES 加密操作
     *
     * @param content 待加密内容
     * @param key     加密密钥
     * @return 返回Base64转码后的加密数据
     */
    public static String encrypt(String content, String key) {
        try {
            Cipher cipher = Cipher.getInstance(DEFAULT_CIPHER_ALGORITHM);// 创建密码器

            byte[] byteContent = content.getBytes("utf-8");

            cipher.init(Cipher.ENCRYPT_MODE, getSecretKey(key));// 初始化为加密模式的密码器

            byte[] result = cipher.doFinal(byteContent);// 加密

            return new String(Base64Utils.encode(result));//通过Base64转码返回

        } catch (Exception ex) {
            LOGGER.error("AES 加密失败!");
            ex.printStackTrace();
        }

        return null;
    }

    /**
     * AES 解密操作
     *
     * @param content
     * @param key
     * @return
     */
    public static String decrypt(String content, String key) {

        try {
            //实例化
            Cipher cipher = Cipher.getInstance(DEFAULT_CIPHER_ALGORITHM);

            //使用密钥初始化,设置为解密模式
            cipher.init(Cipher.DECRYPT_MODE, getSecretKey(key));

            //执行操作
            byte[] result = cipher.doFinal(Base64.getMimeDecoder().decode(content.getBytes()));

            return new String(result, "utf-8");
        } catch (Exception ex) {
            LOGGER.error("AES 解密失败!");
            LOGGER.error("AES 解密失败!" + ex.getMessage());
        }

        return null;
    }

    /**
     * 生成加密秘钥
     *
     * @return
     */
    private static SecretKeySpec getSecretKey(final String key) throws Exception {
        return new SecretKeySpec(key.getBytes("utf-8"), KEY_ALGORITHM);
    }

    public static void main(String[] args) throws Exception {

        System.out.println("加密后: " + AESUtil.encrypt("123456", "5bb5d7df8b363b0f"));

        System.out.println("解密后: " + decrypt("43f7poGxkySaSZyv6Eqt9A==", "5bb5d7df8b363b0f"));
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值