AES 128位CBC加密解密(不使用固定IV)

安全检查时要求账号和密码加密后才能存到数据库中,要求加密算法如下:
1)分组密码算法:AES(密钥长度在128位及以上)(GCM或CBC模式)
2)流密码算法:AES(密钥长度在128位及以上)(OFB或CTR模式)、chacha20
3)非对称加密算法:RSA(2048位及以上)、ECC(256位以上)
4)哈希算法:SHA2、SHA3
5)密钥交换算法:DSA/DH(密钥长度2048位及以上)、ECDH(密钥长度223及以上)
6)HMAC(基于哈希的消息验证码)算法:HMAC-SHA2

因此将原来普通的Base64加密换成AES 128位CBC加密。
对AES加密要求:1、CBC模式或CFB模式必须保证每次加密的IV是安全随机数。2、加密时不能使用固定的IV(如:写死在代码里,或固定在配置文件中)。
下面附上代码:

package com.util;

import org.apache.log4j.Logger;

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.Charset;
import java.security.NoSuchAlgorithmException;
import java.util.Locale;

/**
 * @program 
 * @description AES128位CBC模式加解密
 * @create 2019-04-03 14:55
 **/
public class AESUtil
{
    public final static String ENCODING = "UTF-8";

    private static Logger log = Logger.getLogger(AESUtil.class);

    /**
     * @param 
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
AES128CBC是一种常用的对称加密算法,适用于在线加密数据。它采用128位的密钥,以CBC模式进行加密操作。 在AES128CBC加密过程中,首先需要确定一个密钥,该密钥用于加密和解密数据。然后,将明文数据按照固定长度进行分组,并对每一组数据应用AES算法进行加密操作。 具体而言,AES128CBC采用了链式加密模式(Cipher Block Chaining,CBC),其中,每个分组的加密都依赖于前一个分组的密文。 加密过程中,先将第一个分组与初始向量(Initialization Vector,IV)进行异或运算,然后使用密钥对该结果进行AES加密,得到本分组的密文。接下来,将该密文与下一个分组进行异或运算,继续加密操作。最后,得到所有分组的密文数据。 在解密过程中,首先使用相同的密钥对每个密文分组进行解密操作,得到解密后的数据。解密完成后,将解密结果与前一个密文分组进行异或运算,得到原始明文。 值得注意的是,AES128CBC需要一个初始向量(IV)来确保加密过程中的安全性。初始向量是一个随机生成的数据块,用于第一个明文分组的加密。在连续的加密操作中,每个分组的加密结果都将影响到下一个分组的加密。 总结而言,AES128CBC在线加密是一种安全且常用的对称加密方式,适用于保护在线通信和数据传输的安全。通过使用正确的密钥和初始向量,可以实现数据的保密性和完整性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值