首页 > 解决方案 > 用盐使哈希更安全

问题描述

我是新来的,所以请纠正我的任何问题!

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

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

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

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

标签: javahashsalt

解决方案


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

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

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

hashedPw = sha256(salt + password)

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

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


推荐阅读