使用SHA散列允许更长的bcrypt输入

时间:2012-07-10 13:24:21

标签: cryptography bcrypt

我正在查看跨多种语言的各种bcrypt实现,并注意到大多数语言的字符限制 - 特别是node-bcrypt,php的bcrypt和py-bcrypt都显示的最多72个字符。

如果应用程序预先通过SHA-256或SHA-512校验和来运行用户输入以为bcrypt启用更长的输入,那么有哪些优点和缺点?

1 个答案:

答案 0 :(得分:1)

找到的CLI应用程序here限制为8-56“字符”(它是C,因此字符可以是我想的任何东西)。天知道为什么你会为之后输入基于密码的密钥派生函数创建限制(这几乎肯定会带来无限的输入)。

具有足够强度和输出大小的额外安全散列不会降低安全性。

在将结果输入到bcrypt库之前将结果编码为十六进制数,这几乎可以肯定期待一个字符串(不要被“奇数”00h字节击中)。您不妨使用SHA-256,如果您之后将其输入bcrypt,我认为不会有更多或更少的位会产生影响。否则,您可能被迫使用base64。

最后,尽量不要陷入这种情况,执行非标准加密几乎肯定是一件坏事。