我正在研究几种语言的各种 bcrypt 实现,并注意到大多数语言的字符限制 - 特别是 node-bcrypt、php 的 bcrypt 和 py-bcrypt 都显示的最大 72 个字符。
如果应用程序预先通过 SHA-256 或 SHA-512 校验和来运行用户输入以启用更长的 bcrypt 输入,有哪些优点和缺点?
我正在研究几种语言的各种 bcrypt 实现,并注意到大多数语言的字符限制 - 特别是 node-bcrypt、php 的 bcrypt 和 py-bcrypt 都显示的最大 72 个字符。
如果应用程序预先通过 SHA-256 或 SHA-512 校验和来运行用户输入以启用更长的 bcrypt 输入,有哪些优点和缺点?
此处找到的 CLI 应用程序仅限于 8-56 个“字符”(包括 C)(它是 C,所以我认为字符可以是任何字符)。天知道为什么你会为之后输入基于密码的密钥派生函数的东西创建限制(这几乎肯定会无限输入)。
具有足够强度和输出大小的附加安全哈希不会降低安全性。
在将结果提供给 bcrypt 库之前将结果编码为十六进制,这几乎肯定需要一个字符串(不要被“奇数”00h 字节打击)。您不妨使用 SHA-256,如果您之后将其输入 bcrypt,我认为或多或少不会有什么不同。否则你可能会被迫使用 base64。
最后,尽量不要陷入这种情况,执行非标准加密几乎肯定是一件坏事。