以此哈希为例:
ba7816bf 8f01cfea 414140de 5dae2223 b00361a3 96177a9c b410ff61 f20015ad
对于我的目的而言太长了所以我打算使用它的一小部分,例如:
ba7816bf8f01
ba7816bf
或类似的。我的预期用例:
// example.com/video-gallery/lightbox/ba7816bf8f01
我认为我是SHA256视频的网址,使用前几个字符作为临时ID。 我应该从生成的哈希中使用多少个字符,以大大降低发生冲突的几率?
我从URLs and Hashing by Google得到了这个想法。
答案 0 :(得分:1)
birthday attacks上的维基百科页面有一个表格,其中包含您需要与特定位数发生碰撞的特定条目数作为随机标识符。例如,如果你想要有百万分之一的碰撞机会,并且希望存储一百万个文档,那么你需要少于64位(16个十六进制字符)。
与十六进制相比,Base64是一个很好的方法,可以将更多的位放入相同长度的字符串中,每个字节占1个字符而不是2个字符。