我正在查看跨多种语言的各种bcrypt实现,并注意到大多数语言的字符限制 - 特别是node-bcrypt,php的bcrypt和py-bcrypt都显示的最多72个字符。
如果应用程序预先通过SHA-256或SHA-512校验和来运行用户输入以为bcrypt启用更长的输入,那么有哪些优点和缺点?
答案 0 :(得分:1)
找到的CLI应用程序here限制为8-56“字符”(它是C,因此字符可以是我想的任何东西)。天知道为什么你会为之后输入基于密码的密钥派生函数创建限制(这几乎肯定会带来无限的输入)。
具有足够强度和输出大小的额外安全散列不会降低安全性。
在将结果输入到bcrypt库之前将结果编码为十六进制数,这几乎可以肯定期待一个字符串(不要被“奇数”00h字节击中)。您不妨使用SHA-256,如果您之后将其输入bcrypt,我认为不会有更多或更少的位会产生影响。否则,您可能被迫使用base64。
最后,尽量不要陷入这种情况,执行非标准加密几乎肯定是一件坏事。