You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Rust bcrypt crate时,bcrypt是否存在密码长度限制?

Rust bcrypt库密码长度限制解惑

核心结论:你没有理解误区,原始bcrypt确实存在72字节的输入限制,但Rust的bcrypt crate做了额外兼容处理,所以能支持更长的密码。

具体细节:

  • 原始bcrypt算法的设计只接受最多72字节的输入,超过该长度的部分会被直接截断,不参与哈希计算。这里要注意是字节数而非字符数——比如UTF-8编码的中文每个字符占3字节,对应最多24个中文字符。
  • Rust的bcrypt crate内部对长密码做了适配:当输入密码的字节长度超过72时,它会先对原始密码进行SHA-256哈希,得到一个32字节的哈希值,再将这个哈希值作为bcrypt的输入进行处理。这就绕开了原始算法的长度限制,所以你能成功哈希105字符的密码。
  • 官方文档未提及该限制,是因为库已默认处理了长密码场景,没有特意强调这一实现细节,但这并不代表原始bcrypt的长度限制不存在。

开发建议:

  • 若要严格遵循传统bcrypt的行为逻辑,需要在业务层限制密码的字节长度不超过72;
  • 若依赖当前库的预哈希处理逻辑,可以支持任意长度的密码,但要清楚此时bcrypt哈希的是原始密码的SHA-256值,而非原始密码本身;
  • 可以查看该crate的源码确认这一处理流程——hash函数中会判断输入长度,触发不同的处理分支。

内容的提问来源于stack exchange,提问作者sudoExclamationExclamation

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 20:05:13