https://www.cnblogs.com/huangzedong/p/10098196.html
单向加密:信息摘要,MD5、SHA
不可逆,即明文加密成密文,密文不能解密成原明文,一般用于密码的保存;
双向加密:对称加密、非对称加密
一般用于证件号的保存
对称加密:采用 单钥密码 系统的加密方法,
同一个密钥可以同时用作 信息的加密和解密
AES(常用)、DES、3DES、IDEA、RC2、RC4、SKIPJACK、RC5
非对称加密:公开密钥和私有密钥是一对,
如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;
如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密
RSA(常用)、DSA
如果每次的密钥不变,那密文是不变的
加密算法:1.单向加密,MD5;2.对称加密,AES;3.非对称加密,RSA
处理URL中的加密参数:
String decodeParams = URLDecoder.decode(encodeParams, "utf-8");
前端:String encodeParams = URLEncoder.encode(params, "utf-8");
密码加密:
Spring Security:用BCryptPasswordEncoder方法对密码加密和密码匹配
采用SHA-256 +随机盐+密钥(SHA系列是Hash算法,不是加密算法,使用加密算法意味着可以解密,
但是采用Hash处理,其过程是不可逆的)
Spring security中的BCryptPasswordEncoder方法对密码进行加密与密码匹配 - 简书
//前端传递的密码:用MD5加密后的密码
String password = new BCryptPasswordEncoder().encode(MD5Util.MD5("123456").toLowerCase());
加密:
passwordEncoder.encoder(password)
解密(匹配,不是真的解密,是把输入的密码进行hash处理,得到的hash值和数据库对比(不一定是一样的)):
passwordEncoder.matches(rawPassword, encodedPassword)