SHA256哈希的前8-12个字符有多独特?

时间:2018-03-11 19:04:54

标签: url hash sha256 hash-collision

以此哈希为例:

ba7816bf 8f01cfea 414140de 5dae2223 b00361a3 96177a9c b410ff61 f20015ad

对于我的目的而言太长了所以我打算使用它的一小部分,例如:

ba7816bf8f01
ba7816bf

或类似的。我的预期用例:

  • 网站上的视频库,以缩略图代表。它们是随机排列的。
  • 他们在灯箱里玩。他们没有唯一的ID,只有他们的网址是唯一的。
  • 当灯箱打开时,我使用JS History API在页面网址末尾添加了一些内容。
  

// example.com/video-gallery/lightbox/ba7816bf8f01

  • 后缀必须简短,绝对不是URL。
  • 人们分享网址。
  • 服务器可以理解与/ video-gallery相关的lightbox / ba7816bf8f01。
  • 访问该网址时,灯箱需要找到该后缀所属的视频并进行播放。

我认为我是SHA256视频的网址,使用前几个字符作为临时ID。 我应该从生成的哈希中使用多少个字符,以大大降低发生冲突的几率?

我从URLs and Hashing by Google得到了这个想法。

1 个答案:

答案 0 :(得分:1)

birthday attacks上的维基百科页面有一个表格,其中包含您需要与特定位数发生碰撞的特定条目数作为随机标识符。例如,如果你想要有百万分之一的碰撞机会,并且希望存储一百万个文档,那么你需要少于64位(16个十六进制字符)。

与十六进制相比,

Base64是一个很好的方法,可以将更多的位放入相同长度的字符串中,每个字节占1个字符而不是2个字符。