我创建了一个简单的MVC4应用程序并注册了一个用户。 usrname和密码存储在名为AspNetUsers的表中。该表没有盐场。ASP.NET身份 - 盐在哪里存储?
我明白的方式是当用户登录时;他们输入用户名和密码。盐随后与输入的密码连接并与数据库中的密码进行比较。这是不正确的?即
Hash(PasswordEntered) + Salt = Password in database = authenticated
Hash(PasswordEntered) + Salt <> Password in database = not authenticated
有一个字段名为:aspnetusers.SecurityStamp,但是我的研究告诉我,这不是盐。
更新
刚才我看到斯科特·张伯伦。请参阅以下步骤:
1)用户在注册时输入:Hello123作为密码,Salt(随机生成)为:456,则输入到PasswordHash的密码为:Hello123 + 456 2)尝试登录并输入Hello123(正确)作为密码。 salt(随机生成)为:567.因此,Hello123 + 456与Hello123 + 567进行比较,认证失败。
在这种情况下,用户输入正确的密码并且未通过身份验证。我显然在这里缺少一些基本的东西。
在我的数据库中的AspNetUsers有一个名为[PasswordHash] –
@federico scamuzzi,谢谢。但是,盐在哪里? – w0051977
那里在taht领域有你的密码...盐渍 –