hashedPassword = hash(trulyRandomSalt + password)
哈希密码和真正的随机盐在数据库中存储。
hashedPassword = hash(applicationConstantPepper + uniqueUserName + password)
哈希密码和唯一的用户名存储在数据库中,应用程序常量辣椒存储在应用程序配置中。这里,唯一的用户名充当盐,通常是电子邮件地址。
我阅读了问题链接,其中包含很多有用的信息,但没有提到应用程序常量辣椒值以及如何使用用户名作为盐将如何改进安全性。
我一直使用方法一,即使用32位加密随机盐。然而,我刚刚看到另一个应用程序中使用了方法二。我对方法二的第一个问题是它将用户名与哈希绑定在一起,因此用户名不能更改而不重新生成哈希。
方法二存在哪些安全问题?哪种方法是最好的?