我是新来的,所以请在任何地方纠正我!
我被分配去做一个基本的Java程序,在那里我注册并验证用户,将用户名和密码存储在.txt文件中。密码存储为MD5哈希。另外,我需要制作另一个程序来尝试对.txt文件进行暴力破解以找到密码,并测量所需的时间。
我设法做到了(有点痛苦),最后一步是找到并实现一种方法来减少这种蛮力工作的机会。我进行了很多搜索,除了有人说要使用另一种更安全的密码存储方法外,我发现唯一有用的(我之前听说过,所以我搜索了)是使用盐,我知道它们是串联在一起的在散列之前在密码中输入密码,然后同时存储散列和盐。但是我认为这不会在这种情况下起作用,因为盐也将存储在.txt文件中,因此,由于组合的范围更大,即使花费更长的时间,我仍然可以在蛮力的情况下尝试组合,然后将.txt中的盐添加到其中,然后对其进行哈希处理,并与.txt中存储的哈希进行比较。
这是一种可行的方法,因为它会花费更多时间,从而使暴力破解变得更困难(至少在此作业中,出于学习目的),或者还有其他方法可以这样做吗? 预先感谢!
答案 0 :(得分:0)
首先。 md5-Hash已弃用。请改用sha256或sha512。
盐不应存储在文本文件中。它是程序的配置参数。
现在,您可以使用密码和密码来生成哈希了。
hashedPw = sha256(salt + password)
这避免了攻击者可以通过在查找表中查找原始密码来检索原始密码。 (https://crackstation.net/)
此外,您还可以使用AES算法对密码进行加密。