0

我了解到我需要使用盐,以便相同的密码不会显示在数据库中。

但是从哪里弄到盐呢?我不能全部使用一个,因为它无济于事。我可以生成一个随机的,但是每次哈希都会不同,没有人会重新登录。

所以我发现建议使用加密安全的 RNG 并将盐与用户一起存储。

但我必须为此把桌子变大。我不能使用相同的散列函数来散列用户名并将其用作密码的盐吗?它应该是密码安全的,因为我使用密码安全散列函数来散列密码,对吗?

4

1 回答 1

0

通常,您为每个密码生成一次不同的(不一定是随机的)盐,并将其与哈希一起存储。

如果用户名是唯一的,则从用户名生成盐以生成盐就足够了。通过使用加密哈希函数生成盐,你并没有真正获得任何东西(但你也没有真正失去任何东西),均匀分布就足够了。即使只是按原样使用用户名也可以防止相同的密码出现在数据库中,但它不会像具有更广泛分布的盐那样加强它对彩虹表攻击的抵抗力。

于 2021-04-21T20:23:45.753 回答