Java动态加盐加密
md5+固定盐
注册: md5+邮箱号(盐)+ 123456 = 数据库密码
登录: md5+邮箱号(盐)+ 123456 = 密码
此部分之前已经写过博客,需要进一步了解md5加盐加密的童鞋请点击以下链接
java对密码实现加密(md5、加盐加密)
hash+随机盐
注册: hash + 随机值(盐)+ 123456= 密码 + 刚才的盐值 (可逆加密)= 数据库密码
登录: hash + 从数据库解码出盐+ 123456= 密码
在用户登录时候,系统会从数据库中查询对应用户的密码进行可逆运算,将得到的盐值进行动态加密,得到结果和数据库密码进行比较,如果一致则登录成功。
示例代码
package com.cheung;
import org.junit.Test;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
/**
* 加密测试
*/
public class PasswordTest {
//$2a$10$1/fIxFSGnDZFctpIVF16VuJJ7SkQ/3uwOnZydDKs0ysxSfPmg8kMe
//$2a$10$2aE3odG3Ew71IFuc3hJbtudPRXg70MozyOXqRGfBkJ0Hif3qBzYnu
//$2a$10$NWZspLlnN1bPFfSss9l5I.rcTyL2cA4JtVzcmjzv.6yDT3Q6gnsxS
@Test
public void test01(){
String password = "123456";
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
String encode = passwordEncoder.encode(password); //进行动态加盐加密
System.out.println(encode);
}
@Test
public void testMatches(){
String password = "123456";
String encoder = "$2a$10$1/fIxFSGnDZFctpIVF16VuJJ7SkQ/3uwOnZydDKs0ysxSfPmg8kMe";
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
Boolean result = passwordEncoder.matches(password,encoder);
System.out.println(result);
}
}
Memorial Day is 531 days |