Bcrypt和盐腌密码-澄清吗?

时间:2019-07-02 20:06:10

标签: cryptography bcrypt

我正在使用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,然后对其进行哈希。

请注意,您确实在哈希密码中看到了盐:

enter image description here

恕我直言,这不是正确的方法。 首先,我们应该输入密码+ salt,然后再进行哈希处理。

例如:

enter image description here

您可以在图像中看到盐在最终结果中不可见。

问题:

为什么他们像这样实现哈希哈希密码?这是正确的方法吗?盐在最终结果中可见并不危险吗?

1 个答案:

答案 0 :(得分:0)

盐与哈希一起存储,以便对其进行验证。

如果没有存储盐,则由于您不知道哈希的完整输入(包括盐),因此无法验证哈希。

加盐的要点是使每个哈希不同。不要保密。