我正在研究几种语言的各种bcrypt实现,并注意到大多数语言的字符限制-具体地说,node-bcrypt、php的bcrypt和py-bcrypt都有72个字符的限制。
如果应用程序预先通过SHA-256或SHA-512校验和运行用户输入,以便为bcrypt启用更长的输入,其优点和缺点是什么?
发布于 2012-07-11 02:27:21
CLI应用程序发现here被限制为8-56个“字符”(包括8-56个“字符”)(它是C,所以我认为一个字符可以是任何字符)。天知道你为什么要为一些东西设置限制,然后你把它输入到基于密码的密钥派生函数中(几乎可以肯定的是,这将需要无限的输入)。
具有足够强度和输出大小的额外安全散列不会降低安全性。
在将结果提供给bcrypt库之前,将结果编码为十六进制,bcrypt库几乎肯定需要一个字符串(不要被“奇怪的”00h字节击中)。你最好使用SHA-256,我不认为多一点或少一点会有什么不同,如果你把它提供给bcrypt之后。否则,您可能会被迫使用base64。
最后,尽量不要陷入这种情况,执行非标准密码术几乎肯定是一件坏事。
https://stackoverflow.com/questions/11414310
复制相似问题