gpt4 book ai didi

md5 - 我应该使用什么校验和算法?

转载 作者:行者123 更新时间:2023-12-02 06:50:19 25 4
gpt4 key购买 nike

我正在构建一个系统,该系统需要能够查找字节 block 是否已更新。我认为我应该计算它的校验和,存储它并稍后计算相同的校验和,以查看该 blob 是否已更新,而不是存储整个 blob(它们最多可达 5MB)。

目标是尽量减少以下内容(按顺序):

  • 校验和的大小
  • 计算时间
  • 冲突的可能性(即使内容已被修改,也会发生 2 个相同的校验和)。

我们的系统碰撞次数不超过 1/1,000,000 次是可以接受的。关心的不是安全性,而只是更新/错误检测,因此很少发生冲突是可以的。 (这就是为什么我把它放在要最小化的事情的最后)。

此外,我们无法自己修改文本 block 。

当然,我会想到md5crcsha1,如果我想要一个快速的解决方案,我会这样做。然而,我不仅仅是在寻找快速解决方案,而是在寻找不同方法及其优缺点的比较

最佳答案

我建议你看看this SO page , CRC 与 MD5/SHA1。
速度和碰撞在 this other thread 中讨论。 .
一如既往Wikipedia是你的 friend 。

如果我必须选择,有一个重要的问题需要回答:你是否希望在任何情况下都不会发生碰撞 - 或者至少希望概率如此之低以至于接近月球发生碰撞的概率 future 5 分钟内与地球相撞?

如果是,请选择 SHA 系列。
对于您的情况,我会更改更新检查的完成方式。
例如,增量编号可以与 blob 关联,并代替哈希发送,如果另一个编号不同,则需要更新请求边。这种情况下的碰撞概率从 ~10^-18 到 ~0(基本上是 0 + bug 概率)...

编辑以下评论

找到了这个算法,Adler-32,它适用于具有 32 位 CRC 的长消息 (MB),即大约 ~1/10^9(MD5 的长度为 128 位)。
计算速度很快。
Adler-32 。底部有一些示例(链接)。

关于md5 - 我应该使用什么校验和算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4233113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com