使用SHA1散列极其复杂的密码(超过25个字符,任何ascii字符甚至二进制)是否安全?
实际上,密码代表一个tokenID,但我不想将它像这样存储在数据库中,我更喜欢将其哈希以获得更高的安全性。
密码(令牌)仅在14天内有效,我需要尽可能快地散列它(因此无法使用像bcrypt这样的东西)
密码(令牌)的理想长度是多少?
答案 0 :(得分:0)
在一般情况下,没有。它可能是“复杂的”,但加密随机它可能不是。
最低限度是将RFC2104 HMAC与密钥(胡椒)一起使用;然而,一个更合适的替代方案,如果你绝对坚持,仍然会非常快,将使用PBKDF2-HMAC-SHA-256并忽略关于足够高的迭代计数的所有安全规则,即选择迭代计数10,而不是10,000。
对于密码/令牌哈希,当然,永远不会请求比本机哈希函数提供的更多字节的PBKDF2输出 - SHA-1为20,SHA-256为32,SHA-512为64。
我在my Github repository有几个PBKDF2的示例实现可能有所帮助,当然还有其他语言的其他实现。
使用加密随机的每个密码(每个令牌)盐。