【发布时间】:2018-09-21 03:29:53
【问题描述】:
我们有一个使用 MS 会员提供程序存储密码的旧系统,并且刚刚发现它只使用带有随机盐的 SHA1 来存储密码,因此显然我们担心这种情况。我知道理想的情况是强制重置全局密码,但出于各种原因,我们希望尽可能避免这种情况,并保持现有密码不变。我做了一些探索,并设法找到了一些源代码,并且可以重新散列我的密码,所以我得到与它的存储版本相同的结果,所以我想覆盖所有适当的方法来重新实现以安全的方式编码。
我打算做的是使用当前“安全”哈希(AFAIK,当前的方法仅归类为安全由于暴力破解密码所需的计算时间量,所以如果系统性能得到大幅提升,整个编程世界最终可能不得不重新审视这一点),然后将这个散列包装在代码中现有的散列周围,但我有 2 个问题:-
这真的安全吗?据我所知,每个散列都需要增加熵的量,我 90% 肯定会这样做,但是这样做有什么问题需要我注意吗?我还猜测在散列链中,它是确定“基线”安全级别的最强散列函数,但我想我会仔细检查散列“不安全”散列没有任何奇怪的数学怪癖.我确定不是,但由于问题的性质,我宁愿问一个愚蠢的问题也不愿做出任何不正确的假设,因为我没有真正研究过散列函数的技术方面。
我是否应该在重新散列之前将盐重新应用于当前散列。我对此的想法是,以防万一存在将旧哈希转换为新哈希的现有计算表 - 以防万一邪恶的人做了繁重的工作以试图绕过此方法。我相信 b-crypt 可能已经包含盐,但如果我使用不包含盐的替代品,我猜应该包含一个?
【问题讨论】: