我记得有个人告诉我,如果我允许他更改4个字节,他就可以使一个文件具有任何校验和(CRC-32)。
我听说过给哈希值加盐。我想知道,如果有人的文件与我的文件匹配,那么给MD5或SHA-1哈希值加盐会改变结果,使两个文件不再冲突吗?还是只改变了最终的哈希值?
我听说过给哈希值加盐。我想知道,如果有人的文件与我的文件匹配,那么给MD5或SHA-1哈希值加盐会改变结果,使两个文件不再冲突吗?还是只改变了最终的哈希值?
如果摘要函数已被破解,添加盐到哈希函数并没有什么作用,因为盐必须公开使用,攻击者也可以调整他们的文件来考虑这一点。
解决这个问题的方法是使用安全的哈希函数。MD5已经显示出易于哈希碰撞,但我相信SHA-1目前还没有。
在密码哈希中通常使用盐来避免字典攻击。有很多基于Web的反向哈希字典,您可以输入哈希(例如:1a79a4d60de6718e8e5b326e338ae533),然后得到文本:“example”。使用盐,这变得几乎不可能。如果在密码前面添加随机盐,则字典攻击变得更加困难。
至于碰撞,我认为您无需担心整个文件具有相同的md5或sha1哈希。这并不重要。哈希的重要用途是证明您收到的文件与某个对该文件有权威的人批准的文件相同。如果您向文件添加盐,则需要发送盐以便用户可以验证哈希。
实际上,这使攻击者更容易欺骗您的文件,因为他可以提供虚假的盐和虚假的文件。用户通常可以判断文件是否被伪造,因为它不再起到应有的作用。但是用户如何知道正确的盐和攻击者的盐之间的区别呢?