关于maven项目中使用BCrypt加密方式
maven项目中使用BCrypt加密
BCrypt是一种密码散列函数,主要用于安全地存储和验证用户密码。
它是Blowfish加密算法的一种变体,由Niels Provos设计并在1999年发布。
BCrypt的设计目标是为了抵御彩虹表攻击和暴力/破解,它通过引入盐(salt)和工作因子(cost factor)来增加计算复杂度,从而使得密码哈希更加安全。
- 1. Salt(盐):每个密码哈希都使用不同的随机盐值,这使得即使两个用户使用相同的密码,他们的哈希也会不同,增加了密码被破解的难度。
- 2. Adaptive Work Factor(适应性工作因子):BCrypt允许设置一个工作因子,它决定了计算哈希所需的时间。较高的工作因子意味着更长的计算时间和更高的安全性,但同时也意味着更多的CPU资源消耗。
- 3. Cost Parameter(成本参数):工作因子通常被称为“成本参数”,因为它反映了计算哈希的成本。随着硬件性能的提升,可以逐渐增加成本参数以保持哈希计算的难度,确保安全性不随时间降低。
- 4. Iterative Hashing(迭代哈希):BCrypt使用迭代哈希过程,这意味着它会多次运行哈希算法,以增加破解难度。
- 5. Key Stretching(密钥扩展):BCrypt的迭代过程也是一种密钥扩展技术,它增加了密码到密钥转换的时间,降低了暴力攻击的速度。
在实际应用中,BCrypt通常用于Web应用程序和其他需要安全存储用户密码的系统中。
许多现代框架和库,如Spring Security、Django、Ruby on Rails等,都内置了对BCrypt的支持。
第一步
maven的pom文件里引入依赖
<!--BCrypt依赖-->
<dependency>
<groupId>org.mindrot</groupId>
<artifactId>jbcrypt</artifactId>
<version>0.4</version>
</dependency>
第二步
service的实现类serviceImpl里引入(根据自己的需要更改代码)
user.setPassword(BCrypt.hashpw(reqVo.getPassword(),BCrypt.gensalt()));

第三步
测试
{
"username": "134",
"account": "dkk",
"password": "144",
"address": "小王",
"phone": "135555551" ,
"create_time":"2011"
}
效果如图

总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Spring Security登录接口兼容JSON格式登录实现示例
前后端分离中,前端和后端的数据交互通常是JSON格式,本文主要介绍了Spring Security登录接口兼容JSON格式登录实现示例,具有一定的参考价值,感兴趣的可以了解一下2024-01-01
idea中操作git shelve与git stash全过程
文章介绍了两种代码暂存工具:gitshelve和gitstash,gitshelve提供了静默暂存功能,可以从shelf中取出暂存的代码并多次取出,不需要后可以删除shelf,gitstash则通过vcs菜单进行暂存和取出,方便在不同分支间切换时保留修改2025-11-11


最新评论