我正在使用Bcrypt nuget library,这是一种实现Blowfish密码的加密实用程序
一个简单的方案是创建一个哈希密码+ salt。
关于他们的实施方式,我不了解一件事。
示例:
var salt= BCryptHelper.GenerateSalt(12);
Console.WriteLine(salt);
var hashedPassword = BCryptHelper.HashPassword("myPassword",salt) ;
Console.WriteLine(hashedPassword);
Console.WriteLine(BCryptHelper.CheckPassword("myPassword",hashedPassword));
输出:
$2a$12$RqHpb3v6MeaB5sj0wcasKO
$2a$12$RqHpb3v6MeaB5sj0wcasKO/QkBTgrfVRYk95sT.OGIdU.O/Ip4goi
True
在第一行中,我生成盐。 稍后,我用salt哈希密码。
但是看看响应,他们实际上是将其添加到哈希密码中,而不是添加salt,然后对其进行哈希。
请注意,您确实在哈希密码中看到了盐:
恕我直言,这不是正确的方法。 首先,我们应该输入密码+ salt,然后再进行哈希处理。
例如:
您可以在图像中看到盐在最终结果中不可见。
问题:
为什么他们像这样实现哈希哈希密码?这是正确的方法吗?盐在最终结果中可见并不危险吗?
答案 0 :(得分:0)
盐与哈希一起存储,以便对其进行验证。
如果没有存储盐,则由于您不知道哈希的完整输入(包括盐),因此无法验证哈希。
加盐的要点是使每个哈希不同。不要保密。