JAVA AES算法加密字符串

对称加密算法
数据发信方将明文(原始数据)和加密密钥(mi yue)一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。
主要对称算法有:DES(实际密钥只用到56 位),AES(支持三种密钥长度:128、192、256位),通常首先128位,其他的还有DESede等。

类 SecretKeySpec
可以使用此类来根据一个字节数组构造一个 SecretKey;
构造方法:
SecretKeySpec(byte[] key, String algorithm);//根据给定的字节数组和加密算法构造一个密钥
例:SecretKeySpec secretKey = new SecretKeySpec(KEY.getBytes("UTF-8"), "AES");

类 Cipher
加密工具,为加密和解密提供密码功能;
构造参数包括加密算法的名称(例如,AES),后面可能跟有一个反馈模式和填充方案;
例:Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");//(“算法/模式/填充”或“算法”)

AES算法五种加密模式
1. 电码本模式(Electronic Codebook Book (ECB));2.密码分组链接模式(Cipher Block Chaining (CBC));3.计算器模式(Counter (CTR));4.密码反馈模式(Cipher FeedBack (CFB));5.输出反馈模式(Output FeedBack (OFB))。

IvParameterSpec实现AlgorithmParameterSpec接口

IvParameterSpec ivParameter = new IvParameterSpec(IV.getBytes("UTF-8"));
cipher.init(Cipher.ENCRYPT_MODE, secretKey, ivParameter);//用密钥和一组算法参数初始化此 Cipher
byte[] result = cipher.doFinal(byteContent);//按单部分操作加密或解密数据,或者结束一个多部分操作,在此为加密

原代码:

public static String encrypt(String content) {
        try {
            SecretKeySpec secretKey = new SecretKeySpec(KEY.getBytes("UTF-8"), "AES");
            Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
            IvParameterSpec ivParameter = new IvParameterSpec(IV.getBytes("UTF-8"));
            byte[] byteContent = content.getBytes("UTF-8");
            cipher.init(Cipher.ENCRYPT_MODE, secretKey, ivParameter);
            byte[] result = cipher.doFinal(byteContent);
            StringBuffer sb = new StringBuffer();
            if (null != result && 0 < result.length) {
                for (int i = 0; i < result.length; i++) {//循环取出加密后字节流中的每一个字节
                    //取出的字节与“11111111”按位相与后以字符串形式返回16进制整形
                    String temp = Integer.toHexString(result[i] & 0xFF);
                    if (1 == temp.length()) {
                        temp = "0" + temp;
                    }
                    sb.append(temp);
                }
            }
            return sb.toString().toUpperCase();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值