Hash 从序列整数创建唯一的8个字符字符串

Hash 从序列整数创建唯一的8个字符字符串,hash,unique,sequential,hash-collision,Hash,Unique,Sequential,Hash Collision,我需要从序列整数(0、1、2、3等)生成一个唯一的8个字符的字符串 我尝试用md5/sha256/sha512对int进行散列,然后将其缩短为8个字符,但是有很多冲突,如果可能的话,我想尝试避免这些冲突 我研究过crc32之类的算法,但由此产生的哈希包含了太多我不喜欢的数字 有人能推荐一种替代方法来做我需要的事情吗?你只需要它是独一无二的吗?如果不需要实散列,可以使用整数的二进制表示(用零填充)。它是独一无二的是的,它确实是独一无二的。唯一的问题是,如果散列至少看起来有点随机,我更喜欢以yout

我需要从序列整数(0、1、2、3等)生成一个唯一的8个字符的字符串

我尝试用md5/sha256/sha512对int进行散列,然后将其缩短为8个字符,但是有很多冲突,如果可能的话,我想尝试避免这些冲突

我研究过crc32之类的算法,但由此产生的哈希包含了太多我不喜欢的数字


有人能推荐一种替代方法来做我需要的事情吗?

你只需要它是独一无二的吗?如果不需要实散列,可以使用整数的二进制表示(用零填充)。它是独一无二的是的,它确实是独一无二的。唯一的问题是,如果散列至少看起来有点随机,我更喜欢以youtube视频的视频ID为例。我知道这确实是一个有点奇怪的请求。但是,当你截断像SHA256这样的真正哈希函数的输出并获取56位时,你会发现很多冲突,这是非常可疑的。我不认为这会发生。。除非你散列几十亿个整数。当我散列1000万个整数(使用sha256)时,会发生约12k次冲突。你是如何尝试使用字符串的?也就是说,如果它类似于youtube,那么您将把该字符串存储在某个位置,以用于反向查找表。如果是这种情况,您可以生成随机字符并测试它们是否在表中,如果是,请尝试另一组。