出于缓存目的的最佳哈希算法?

问题描述 投票:0回答:1

我需要为我的服务器实现一个缓存机制,在其中我将读取静态资源的内容(字节),并向客户端提供它们的哈希值。这样,如果哈希没有更改(即使在版本更新之后),我想手动缓存文件。

我正在研究SHA,MD5等,但是这些散列的设计成本很高。 我不需要安全的密码哈希,我只需要冲突很小的快速且确定性哈希。

是否有满足此需求的哈希算法的想法?

algorithm hash
1个回答
1
投票

我认为您确实需要安全的哈希。

安全散列的设计应使任何2个不同的文件都应具有不同的哈希。 MD5和SHA1中的碰撞仅通过具有2个相似的文件来产生,这些文件被一起修改以产生孪生子。

相比之下,CRC可以计算文件中的简单更改,以得出文件的任何任意CRC,只需更改几个字节(我认为是4或8个字节)。

因此,安全的哈希将使您几乎可以100%确定地查看其他文件。当最后一次问这个问题(在工作中)时,我建议使用CRC进行散列,并发现CRC32比MD5慢。

这是由于MD5轮比CRC32对更宽的数据块执行运算,并且实际上更快。

如果要保证有区别,请使用安全的哈希。考虑忽略散列(MD5,MD4,MD3,MD2,SHA1等),因为它可能会影响数据完整性。实际测试性能以查看硬件的吞吐量,因为某些CPU具有帮助说明以加快HASH算法的速度。

© www.soinside.com 2019 - 2024. All rights reserved.