我只是想知道如何让我的java程序继续运行,但总是准备好接受输入.
现在我正在使用缓冲区读取器并读取一行,但这使我的程序暂停并等待输入.我希望程序继续运行但是随时准备好接受输入,有没有办法做到这一点?
假设用户注册了您的站点,您将他们选择的密码哈希,然后将该哈希值用作盐并使用该盐重新密码.
例:
String hash1 = MD5(password);
String endHash = MD5(hash1 + password);
Run Code Online (Sandbox Code Playgroud)
然后将endHash存储在您的数据库中.如果我的数据库被压缩,这个有效的反对彩虹表会攻击吗?或者我错过了一些容易打破的东西?
好的,所以我理解为什么在散列之前输入密码是个好主意.问题是,通常人们建议将盐附加或添加到密码中,为什么不同时使用?
我的想法是,所以如果黑客先生掌握数据库并希望得到人x的密码,他会认为自己,大多数人都建议附加或预先添加盐,所以我们这样做.他生成一个彩虹表密码+盐的所有组合,并试试他的运气.如果这不起作用他会做同样的但盐+密码.
为了使攻击变得更加困难,为什么开发人员不再采取进一步做"盐+密码+盐",或"反向(盐)+密码+盐",或者你可能很想要并开始切割密码/盐,开始在这里和那里放点盐等.
黑客能够找到密码的唯一方法是,他是否可以访问源代码(了解在散列之前如何将盐编织到密码中)
另外需要注意的是,人们建议在进行按键拉伸时至少进行1000次迭代,为什么不进行1147,1652等等:)
第二个注意事项,当查看哈希字符串时,是否可以计算出使用的哈希函数?
嘿,任何人都可以使用正则表达式,我可以用来验证只包含字母数字字符的字符串以及'',' - ','_'和'.' ?
谢谢
hash ×2
security ×2
continuous ×1
cryptography ×1
database ×1
input ×1
java ×1
regex ×1
salt ×1