2011-08-02 11 views

回答

1

用于密码散列?当然。只要足够长的盐就够了。

你需要认识到,你在这里使用散列的目的是什么。你在对密码进行哈希处理,这样如果有人能够掌握这些哈希值,他们就无法从中推断出原始密码。我们使用盐,所以基于蛮力和彩虹表的攻击效果较差,并且我们为每个密码制作独特的盐,以便使用相同密码的两个用户具有不同的哈希值。 HMAC不会在这里添加任何安全措施,除非作为一种盐来使用。

当您使用散列函数作为消息/文件的数字签名时(例如,php.net uses it one their downloads page),HMAC是相关的。您使用HMAC密钥,以便只有知道该密钥的人才能验证散列内容的真实性(与php.net下载相比,每个人都可以检查下载文件的md5),并且使得更难以伪造产生相同内容的消息哈希(你需要知道密钥,知道什么哈希目标)

+0

我想我很困惑你对盐说什么。只要我足够长的盐,这很好? –

+1

@pythonscript:我在我的回答中扩充了这个话题 – Mchl

+0

感谢您的帮助;现在,我为每个不同的用户生成一个随机salt(通过/ dev/urandom),这个用户被加密并存储。当我散列他们输入的任何密码进行比较时,会使用它。由于HMAC不会在这里添加任何安全措施,所以我可能会放弃它,以免我每次需要散列密码时都会抓住密钥的开销。 再次感谢您! –

相关问题