我是否应该使用一个秘密字符串作为哈希值,或者让每个用户使用自己的哈希值进行散列更好?
考虑这三个哈希:
hash("secretKey777" + password);
hash("secretKey777" + username + password);
hash(username + password);
哪一个是最难破解的,最安全的?我认为最好使用hash("secretKey777" + username + password);
,因为每个用户不仅拥有" secretKey777"作为一个盐,但也有自己的用户名。如果密码泄漏的代码泄漏,则不会立即攻击所有哈希值 - 每个哈希值都有自己独特的盐。
答案 0 :(得分:-1)
根据我的理解,盐必须是:
a)每个用户都是唯一的(否则,泄漏盐将允许为您的特定盐构建rainbow table来解密密码),因此hash("secretKey777" + password)
不适合我。
b)密码随机(我没有争论,只是感觉这有帮助)。
我更喜欢
hash("secretKey777" + cryptographically_random_salt_string + password);