gpt4 book ai didi

.net - 为什么在同一个数据库中保存散列密码的盐是安全的?

转载 作者:行者123 更新时间:2023-12-04 16:53:33 26 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Where do you store your salt strings?

(7 个回答)


8年前关闭。




我理解散列和加盐的必要性,但我不明白如何将盐存储在同一个(可能受到损害的)数据库中,因为整个散列是安全的。例如,我正在研究的一本书指示通过随机生成一个整数并使用 RNGCryptoServiceProvider 创建一个 byte[] 来为每个用户(好)创建一个唯一的哈希。这一切都很好,但是为了在登录时验证用户的密码,有必要从数据库(或其他文件)中读取唯一的盐。这是储存盐的安全方式吗?

最佳答案

想象一下你是一个坏人,你可以访问密码数据库。那里有很多信息,事情已经够糟了。对我们其他人来说唯一的好消息是这最终是死数据。你真正想要的是访问活跃的、正在运行的系统,以及让该系统做任何你想做的事情的能力……尤其是如果没有人知道你在里面。

这是诀窍。要获得访问权限,您实际上不需要发现真正的密码:您只需要找到一些导致相同散列的文本值。更糟糕的是,您不需要对结果进行暴力破解。有一些有用的表格可以让您快速找到将产生您需要的散列的文本。

因此,盐的目的是为这些预先计算的表格添加一条皱纹。您可能有一个可以产生特定哈希值的值,但您预先计算的“彩虹表”没有考虑盐分。盐完全改变了哈希。现在您又需要对个人密码进行暴力破解,如果系统设计人员使用了可能需要数年时间的良好加密算法。

这里的好处是,即使您知道盐的值(value),它也会产生这种影响。仅拥有每个用户的盐,即使盐是公开的,也会破坏攻击者对您的密码数据库使用彩虹表攻击的能力。

(但是,共享盐将允许攻击者使用通用密码等开始运行破解解决方案,并开始将东西扔到墙上……将哈希结果与所有用户进行比较,看看会发生什么)。

关于.net - 为什么在同一个数据库中保存散列密码的盐是安全的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15736118/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com