安全检查时要求账号和密码加密后才能存到数据库中,要求加密算法如下:
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