我的第一个问题是,我听说散列弦2倍(如SHA1(SHA1(密码))),因为第二哈希具有固定的长度,是真的么?
我的第二个问题是,这是更安全吗? (VAR1和VAR2是2个字符串):
- SHA1(VAR1 + SHA1(VAR2))
- SHA1(VAR1 + VAR2)
如果是第一次一个,它是值得的性能成本?
我的第一个问题是,我听说散列弦2倍(如SHA1(SHA1(密码))),因为第二哈希具有固定的长度,是真的么?
我的第二个问题是,这是更安全吗? (VAR1和VAR2是2个字符串):
如果是第一次一个,它是值得的性能成本?
通过散列字符串两次,你都在增加冲突的风险,这是坏的安全,明智的。
代替具有的输入导致2个128可能输出的无限量的,你将有2个128可能的输入导致可小于2个128输出。
至少散列之前使用盐和胡椒保持输入到无限的可能性。 散列两次提高脚本的运行时间,并增加冲突的风险,除非你保持无限的输入源。
也不是很安全的。 不要重新发明轮子。 HMAC是专为这一点; 特别是,它需要的步骤(填充等),以避免与在某些散列算法与上述“简单”的实现方式交互不良某些弱点的问题。
此外,双散列是没有用的,以提高安全性。 试想一下:在最好的,你会从一个随机ISH值映射到另一个随机十岁上下的价值。 然而,如果有冲突两个结果从第二散列值相等,你已经通过了碰撞结束了丢失的安全性。 也就是说,你永远无法摆脱的碰撞这样的,但你可以得到一个。
这就是说,现有的原像攻击可能无法正常工作对双散列......但是! 他们可能仍然工作。 我没有资格说这些了,如果你问这个在这里,你可能不会。 当然冲突攻击,这些都是今天的现实与MD5,不受双散列阻碍。
这是最好坚持使用已经经受住了几十年的分析证明算法,因为加密,这一切都太容易做的东西看起来安全,但并非如此。
我怀疑这会增加任何安全措施的办法。 它会增加你的脚本的运行时间,但不会很多安全添加到哈希值。 请记住,当有人试图打破你的哈希,他们并不需要找到VAR1和VAR2的确切价值,他们只需要找到一个导致相同的哈希。
我在密码学方面的专家,但据我所知,你会从多次散列值,除了放缓过程增益没有安全。 所以,如果你凑1000次,你会作出攻击(例如字典攻击)慢1000倍,但是这是在哈希一次或两次的情况下,相当无关。
只需使用一个无盐使其能够方便地得到解决。
有迹象表明,含有这些吨散列所以没有盐单个散在旁边没有许多亟待解决的大表。
添加在第二哈希帮助不大要么是因为再一次这些表已经与保存的值存在。
被加入到密码的动态盐将助阵更那么多哈希值。 多哈希真的不增加太多了。
我对这种感觉是,你建设有一个铁门砖墙,但其他墙壁是由胶合板制成。 换句话说,你可以根据需要为哈希密码注入尽可能多的安全,但仍然要容易得多的方式来破解你的系统。 我认为这是更好地采取广泛的方法,而不是安全过于担心这样的事情的。
被VAR1 + VAR2会在预期的情况一样吗? 我的意思是,第一个命题应该确定在这种情况下,你会避免碰撞散列。 关于是值得的成本,这就是你应该回答的问题。 是避免物有所值的碰撞。
关于SHA算法,它应该是真正的争夺结果。 因此,应用了很多次,不应该有更好的效果,也不将它应用到一个“更随意”投入应产生更好的效果。
散列字符串多次将字典攻击的情况下,攻击者的任务更加复杂,使其“更长时间”蛮力。 你的第一个问题是不明确的,但因为第二哈希具有固定的长度在多重哈希值是不是不太安全。
但是,除了多散更重要的,使用的盐是更好的安全至关重要。
关于你的第二个问题,我会说这是不是很直白的说哪两个是最安全的,我觉得跟选项2会是真的够了。