密码哈希函数 Bcrypt的最大密码长度限制

Bcrypt是一个很流行的密码哈希算法,是Niels Provos和DavidMazières基于Blowfish加密算法设计的密码哈希算法,于1999年在USENIX协会上提交。Bcrypt在设计上包含了一个盐Salt来防御彩虹表攻击,还提供了一种自适应功能,可以随着时间的推移,通过增加迭代计数以使其执行更慢,使得即便在增加计算能力的情况下,Bcrypt仍然能保持抵抗暴力攻击。
Bcrypt是OpenBSD和SUSE Linux等操作系统默认的密码哈希算法。但是在使用Bcrypt算法的实现时,要注意它有最大密码长度限制,通常为50~72字符,准确的长度限制取决于具体的Bcrypt实现。超过最大长度的密码将被截断。
下面使用spring Security的BCryptPasswordEncoder为例:
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
// 72 字符
String password1 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
// 73 字符
String password2 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab";
String encodedPassword1 = passwordEncoder.encode(password1);
boolean matches = passwordEncoder.matches(password2, encodedPassword1);
System.out.println("encodedPassword1: " + encodedPassword1);
System.out.println("matches: " + matches);
当运行程序时,会输出这样的结果:
encodedPassword1: $2a$10$A5OpVKgjEZzmy6UNsqzkjuG2xGET1wp3b/9ET5dz/tHQ3eRvyXSSO matches: true
这证明了Password字符串超过72字符的部分被截断丢弃了。
要解决Bcrypt密码算法72字符长度限制的问题,可以这样:
先使用SHA-256算法对字符串进行加密,再使用Bcrypt算法加密,用伪码示意如下:
hashpw(sha256('password'), salt);
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# 密码哈希函数
# Bcrypt的最大密码长度限制
# Bcrypt
# Java使用bcrypt实现对密码加密效果详解
# SpringBoot整合BCrypt实现密码加密
# Spring security BCryptPasswordEncoder密码验证原理详解
# 使用mongoose和bcrypt实现用户密码加密的示例
# Express下采用bcryptjs进行密码加密的方法
# PHP更安全的密码加密机制Bcrypt详解
# 一文掌握SpringSecurity BCrypt密码加密和解密
# 是一个
# 要注意
# 希望能
# 将被
# 使其
# 为例
# 谢谢大家
# 数以
# 自适应
# 情况下
# 操作系统
# 迭代
# 但是在
# 包含了
# 证明了
# OpenBSD
# BCryptPasswordEncoder
# spring
# Security
相关文章:
微课制作网站有哪些,微课网怎么进?
如何在企业微信快速生成手机电脑官网?
如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本
北京专业网站制作设计师招聘,北京白云观官方网站?
ppt制作免费网站有哪些,ppt模板免费下载网站?
如何挑选优质建站一级代理提升网站排名?
如何通过云梦建站系统实现SEO快速优化?
免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?
电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?
建站之星后台管理:高效配置与模板优化提升用户体验
如何确认建站备案号应放置的具体位置?
建站之星安装步骤有哪些常见问题?
如何在IIS7上新建站点并设置安全权限?
昆明高端网站制作公司,昆明公租房申请网上登录入口?
如何通过免费商城建站系统源码自定义网站主题与功能?
婚礼视频制作网站,学习*后期制作的网站有哪些?
大连 网站制作,大连天途有线官网?
建站上市公司网站建设方案与SEO优化服务定制指南
较简单的网站制作软件有哪些,手机版网页制作用什么软件?
建站主机服务器选型指南与性能优化方案解析
建站主机选择指南:服务器配置与SEO优化实战技巧
建站之星如何修改网站生成路径?
北京营销型网站制作公司,可以用python做一个营销推广网站吗?
定制建站方案优化指南:企业官网开发与建站费用解析
北京网站制作的公司有哪些,北京白云观官方网站?
php json中文编码为null的解决办法
建站主机是什么?如何选择适合的建站主机?
建站之星上传入口如何快速找到?
音乐网站服务器如何优化API响应速度?
css网站制作参考文献有哪些,易聊怎么注册?
如何在Golang中使用replace替换模块_指定本地或远程路径
广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?
微信小程序 五星评分(包括半颗星评分)实例代码
活动邀请函制作网站有哪些,活动邀请函文案?
如何选择PHP开源工具快速搭建网站?
常州自助建站费用包含哪些项目?
如何在橙子建站中快速调整背景颜色?
C++时间戳转换成日期时间的步骤和示例代码
孙琪峥织梦建站教程如何优化数据库安全?
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
公众号网站制作网页,微信公众号怎么制作?
建站之星Pro快速搭建教程:模板选择与功能配置指南
如何快速搭建高效WAP手机网站?
如何在云主机上快速搭建网站?
如何用腾讯建站主机快速创建免费网站?
免费视频制作网站,更新又快又好的免费电影网站?
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
建站主机选哪家性价比最高?
小程序网站制作需要准备什么资料,如何制作小程序?
做企业网站制作流程,企业网站制作基本流程有哪些?
*请认真填写需求信息,我们会在24小时内与您取得联系。