01-常见加密
一.加密、Hash、编/解码 概念
加密:加密对应着解密,所以不能反推出明文的都不应该是加密算法
Hash:MD5 和 Bcrypt 都是Hash散列算法,是不可逆的,所以它们不能叫做加密
编/解码:常见的编解码 有URLEncoder和URLDecoder、Base64、Unicode
二.常用的密码Hash算法
MD5: MD5的强度现在已经不够用,暴力破解和彩虹表的出现使MD5方式已经不够安全; 存储密码的时候应该不应该选用了
sha1、sha256、sha512
BCrypt BCrypt 是采用强Hash算法,比MD5强度更大; 可以采用Spring-Security框架中的 BCryptPasswordEncoder类进行对密码加密
BcryptPasswordEncoder类加密和解密
特点:相同明文每次encode结果不一样,但是还是能够验证成功,原理是encode时添加的盐值被隐藏在加密后的密文中
@Test
public void encodeAndDecode(){
BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
// 相同明文每次encode结果不一样,但是还是能够验证成功,原理是encode时添加的盐值被隐藏在加密后的密文中
String hashedPassword = encoder.encode("admin");
System.out.println("hashedPassword=>"+hashedPassword);
boolean isMatch = encoder.matches("admin", hashedPassword);
System.out.println("isMatch=>"+isMatch);
}
三.常见加密算法
参考博客:https://blog.csdn.net/dengjili/article/details/85862201
对称加密:加密和解密用同一个密钥
DES
3DES
AES
非对称加密:加密和解密用不同的密钥 (一般有公钥和私钥)
RSA
四.常见的编/解码
URLEncoder 和 URLDecoder
Base64
Unicode
Last updated
Was this helpful?