当前位置:   article > 正文

BCrypt算法的基础使用

bcrypt

BCrypt算法是一种基于哈希算法的算法,所以,这种算法也是不可逆的!

应用场景:用于存放密码,卡号等不可解密的数据信息

在开发实现中,通常,可以使用配置类中的@Bean方法来创建BCryptPasswordEncoder对象,此对象将是由Spring进行管理的,当需要使用时,自动装配即可,例如:

  1. @Configuration
  2. public class SecurityConfiguration {
  3. @Bean
  4. public PasswordEncoder passwordEncoder() {
  5. return new BCryptPasswordEncoder();
  6. }
  7. }
  1. @Service
  2. public class AdminServiceImpl implements IAdminService {
  3. @Autowired
  4. private PasswordEncoder passwordEncoder;
  5. }

下面我们来看看BCrypt的使用:

 如上我们编写了一个测试类,类中方法testEncode()和testMaches()分别实现了密码加密和密码匹配

当我们执行第一个方法testEncode()得到如下结果:

 我们在多执行几次,看看结果会有什么不同:

对此我们可以很清楚的看到,密码并未改变都是123456,而加密后的密文每一次的结果都不同的.

为什么会出现这种情况?

这是因为

通过BCrypt算法进行编码后的结果,长度固定为60字符。

使用同一个原文进行反复编码,每次得到的结果都是不同的,因为在编码过程中,BCrypt使用了随机的盐,并且,使用的盐也作为编码结果的一部分保存了下来。

BCrypt算法的加盐机制:

随机生成一个含有29个字符的字符串,并且会与密码一起合并进行最终的密文生成
每一次生成的盐的值都是不同的
且密码不可逆,是通过加密后和密文比较来确认


下面我们执行一下testMaches()方法看看生成的不同密文是否和原密码都是匹配的: 

 

 可以看出生成的不同密文最终的匹配结果都是true.

所以,以上就是BCrypt算法的一些基础使用,希望可以帮助到大家!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/815660
推荐阅读
相关标签
  

闽ICP备14008679号