摘要:bcrypt是一种跨平台的文件加密工具。bcrypt 使用的是布鲁斯·施内尔在1993年发布的 Blowfish 加密算法。由它加密的文件可在所有支持的操作系统和处理器上进行转移。它的口令必须是8至56个字符,并将在内部被转化为448位的密钥。
Bcrypt就是一款加密工具,可以比较方便地实现数据的加密工作。你也可以简单理解为它内部自己实现了随机加盐处理
例如,我们使用MD5加密,每次加密后的密文其实都是一样的,这样就方便了MD5通过撞库的方式进行破解。
Bcrypt生成的密文是60位的。而MD5的是32位的。
举个例子看看:首先这里我使用的maven引入的坐标是【spring-security】的引用
1 2 3 4 5 6 7 8 9
| <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-web</artifactId> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-config</artifactId> </dependency>
|
我们编写测试类案例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| package test; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
public class CeShi { public static void main(String[] args) { String password = "123456"; BCryptPasswordEncoder passwordEncoder=new BCryptPasswordEncoder(); String newPassword = passwordEncoder.encode(password); System.out.println("加密密码为:"+newPassword); boolean matches = passwordEncoder.matches(password, newPassword); } }
|
我们得到的结果是:
1 2
| 加密密码为:$2a$10$iRdNmYoINR8QqynemTsP2OzFtM7N5pFPoBFuzAtvR6YBtov4gRt7e 两个密码是否一致true
|
我们再运行一遍查看打印结果:
1 2
| 加密密码为:$2a$10$kvc3uoQQDkfxTr3RuVpMJeBd7NZbPMMbma11hp1c68Kseioaqe4U. 两个密码是否一致true
|
发现多次加密后的密码都是不一样的,这样我任你怎么撞库也难破解我的密码了。