簡(jiǎn)介:bcrypt是一種跨平臺(tái)的文件加密工具。
Bcrypt就是一款加密工具幔睬,可以比較方便地實(shí)現(xiàn)數(shù)據(jù)的加密工作。你也可以簡(jiǎn)單理解為它內(nèi)部自己實(shí)現(xiàn)了隨機(jī)加鹽處理
例如赦抖,我們使用MD5加密队萤,每次加密后的密文其實(shí)都是一樣的矫钓,這樣就方便了MD5通過(guò)大數(shù)據(jù)的方式進(jìn)行破解。
Bcrypt生成的密文是60位的赵辕。而MD5的是32位的概龄。
使用BCrypt 主要是能實(shí)現(xiàn)每次加密的值都是不一樣的。
maven依賴:
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
</dependency>
測(cè)試:
public class BcryptTest {
public static void main(String[] args) {
//用戶密碼
String password = "123456";
//密碼加密
BCryptPasswordEncoder passwordEncoder=new BCryptPasswordEncoder();
//加密
String newPassword = passwordEncoder.encode(password);
System.out.println("加密密碼為:"+newPassword);
//對(duì)比這兩個(gè)密碼是否是同一個(gè)密碼
boolean matches = passwordEncoder.matches(password, newPassword);
System.out.println("兩個(gè)密碼一致:"+matches);
}
}
結(jié)果1:
再運(yùn)行一次
結(jié)果2:
結(jié)論:
發(fā)現(xiàn)同一個(gè)密碼加密后的結(jié)果都不一樣,所以不能被反推破解嚎幸。