gpt4 book ai didi

来自对象内容的哈希作为对象 ID : fast alternatives for SHA256

转载 作者:行者123 更新时间:2023-12-01 03:09:53 25 4
gpt4 key购买 nike

我正在设计 Content-addressable storage ,所以我正在寻找一个哈希函数来生成对象标识符。每个对象都应该以这种方式根据其内容获得短 ID:object_id = hash(object_content) .

先决条件:

  • 散列函数应该很快。
  • 碰撞概率必须尽可能低。
  • 最佳 ID 长度为 32字节以寻址 256^32最大对象(但此要求可能会放宽)。

  • 考虑到这些要求,我拿起了 SHA256哈希,但不幸的是它对我的目的还不够快。 SHA256 的最快实现我能够进行基准测试的是 opensslboringssl : 在我的桌面上 Intel Core I5 6400它给出了大约 420 MB/s每个核心。其他实现(如 Go 中的 crypto/rsa)甚至更慢。我想替换 SHA256与提供与 SHA256 相同的冲突保证的其他哈希函数,但提供更好的吞吐量(每个内核至少 600 MB/s)。

    请分享您对解决此问题的可能选项的意见。

    另外我想指出,硬件更新(比如购买带有 AVX512 指令集的现代 CPU)是不可能的。重点是找到能够在商品硬件上提供更好性能的哈希函数。

    最佳答案

    查看 CityhashHighwayHash .两者都有 256 位变体,并且比 SHA256 快得多。 Cityhash 更快,但它是非加密哈希。 HighwayHash 较慢(但仍比 SHA256 快),并且 secure哈希。

    所有现代非加密哈希都是 很多比 SHA256 更快。如果您愿意使用 128 位散列,您将拥有更多 options .

    请注意,您可能需要考虑使用 128 位哈希,因为它可能足以满足您的目的。例如,如果您有 1010 个不同的对象,您与质量 128 位散列发生冲突的概率小于 10-18。查看表格 here .

    关于来自对象内容的哈希作为对象 ID : fast alternatives for SHA256,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53041646/

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