1
51
简而言之:是的。按照第一个例子。。。如果在不添加原始数据的情况下反馈到自身,哈希函数可能会丢失熵(我现在似乎找不到引用,我会继续查找)。 作为记录,我支持多次散列。 对于您的服务器来说,需要500毫秒才能生成的哈希并不太慢(考虑到生成哈希通常不会在绝大多数请求中完成)。然而,一个需要这么长时间的散列将显著增加生成彩虹表所需的时间。。。 是的,它确实暴露了DOS漏洞,但它也可以防止暴力攻击(或者至少使攻击速度慢得令人望而却步)。这绝对是一种权衡,但对某些人来说,好处大于风险。。。 至于退化碰撞,到目前为止我能找到的唯一来源是 this discussion 还有一些关于这个话题的讨论: 还有一些链接:
|
2
6
除了多次重新散列外,我还会为每个密码/用户使用不同的salt。虽然我觉得5000次迭代有点太多了,但是试着用一个更低的数字。这里有一个折衷办法,你必须根据你的需要和硬件来调整它。 由于每个密码使用不同的盐,攻击者将被迫逐个强制执行每个密码,而不是构建彩虹表,这会大大增加工作负载。 一如既往,这里有一个推荐阅读: Just hashing is far from enough 编辑:迭代哈希是一种 perfectly valid tactic |
3
3
|
4
0
迭代散列的原因是使进程尽可能慢。所以你可以做得更好:每次迭代使用不同的盐。它可以通过在每次迭代中用固定密钥反复加密原始数据并用salt值XORing来完成。 |
5
0
|