时间:2021-05-19
密码哈希函数 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/tHQ3eRvyXSSOmatches: true这证明了Password字符串超过72字符的部分被截断丢弃了。
要解决Bcrypt密码算法72字符长度限制的问题,可以这样:
先使用SHA-256算法对字符串进行加密,再使用Bcrypt算法加密,用伪码示意如下:
hashpw(sha256('password'), salt);感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
大家在一些网站上经常可以看到数码密码会根据输入的密码长度显示安全条功能,此功能基于js如何实现的呢?下面看下实现代码,具体代码如下所示://根据密码长度显示安全
本文实例为大家分享了C语言实现密码强度检测,供大家参考,具体内容如下1方案得分项一、密码长度:公式:+(n*4),其中n表示密码长度二、大写字母:公式:+((l
本文给大家分享一段简单的代码,实现根据密码长度显示安全条功能,代码如下所示://根据密码长度显示安全条密 码:*弱中强使用数字,字母,下划线,长度在6-20个
在输入密码时,将密码的长度设置为6-16,且在密码长度出现小于6或是大于16时,会出现提示,效果如下图1.此事件为失去焦点事件,当鼠标离开密码框且点击旁边就会触
如何实现色条随输入密码长度变化效果:在很多网站注册页面都有这样的功能,当用户输入密码的时候,下面会出现一个色条,色条的长度会跟随输入密码的长度变化,并且色条的颜