用盐使散列更安全

making hash more safe with a salt

我是新来的,所以请指正我!

我被指派做一个基本的 java 程序,我在其中注册和验证用户,将用户名和密码存储在 .txt 文件中。密码存储为 MD5 哈希。此外,我需要制作另一个程序来尝试暴力破解 .txt 文件以查找密码,并测量这样做所需的时间。

我设法做到了(有点痛苦),最后一步是找到并实施一种方法来减少这种暴力破解工作的机会。我搜索了很多,除了人们说使用另一种更安全的密码存储方法之外,我发现唯一有用的东西(我之前听说过所以我搜索过)是使用盐,我知道它们是串联的在散列之前的密码中,然后存储散列和盐。

但我认为这在这种情况下行不通,因为盐也会存储在 .txt 文件中,因此,即使由于可能的组合范围更大而需要更长的时间,我仍然可以进行蛮力我尝试组合并将 .txt 中的盐添加到其中,然后对其进行哈希处理并与存储在 .txt 中的哈希值进行比较。

这是一种可行的方法来使蛮力更难(至少在这个作业中,出于学习目的)因为它需要更多的时间,或者是否有任何其他方法可以做到这一点? 提前致谢!

首先。 md5-Hash 已弃用。请改用 sha256 或 sha512。

盐不应存储在文本文件中。它是您程序的配置参数。

现在,您可以使用您的秘密盐和密码生成哈希。

hashedPw = sha256(salt + password)

这避免了攻击者可以通过查找 table 来检索原始密码。 (https://crackstation.net/)

此外,您还可以使用 AES 算法加密您的密码。