Hash 用CRC32散列UUID是否总是不正确?

Hash 用CRC32散列UUID是否总是不正确?,hash,uuid,crc32,Hash,Uuid,Crc32,例如,我有一个UUID 3f107c44-336c-409b-b6d8-889d552a5339,如果我用CRC32散列它,我能确保UUID的散列不会崩溃吗 ========= 我之所以想问这个问题,是因为我不确定自己是否正确 我真正想做的是基于现有唯一id生成唯一id。否。UUID表示128位的值。CRC-32仅为32位。因此,充其量只能将任意一个CRC-32值映射到296(79228162514264337593543950336)个不同的UUID值。想想输入中有多少位,输出中有多少位。如果

例如,我有一个UUID 3f107c44-336c-409b-b6d8-889d552a5339,如果我用CRC32散列它,我能确保UUID的散列不会崩溃吗

=========

我之所以想问这个问题,是因为我不确定自己是否正确


我真正想做的是基于现有唯一id生成唯一id。

否。UUID表示128位的值。CRC-32仅为32位。因此,充其量只能将任意一个CRC-32值映射到296(79228162514264337593543950336)个不同的UUID值。

想想输入中有多少位,输出中有多少位。如果UUID(=通用唯一标识符)是唯一的,CRC只是一个哈希函数,结果将是唯一的too@Radinator数学不在乎意见,我还没听说过散列UUID值的好理由;只需使用该值(一个128位的值,实际上已经是唯一的)。重新措辞你的问题,解释你的目的或目标。@BasilBourque这只是我好奇的事情,我不确定,几乎可以肯定它不会起作用。我只是想在现有唯一ID的基础上生成一个更短的唯一ID。我明白了:(如果我使用0的递增计数器,那么对每个值进行CRC32散列怎么样?它会是唯一的吗?为什么散列?是的,如果在遇到UUID时只计算遇到的UUID,并且没有遇到超过2^32个UUID,那么只将它们映射到32位。但是,这对于哈希表来说没有任何价值,因为然后无法从UUID中找到散列值。我只是想找到一种方法来生成一个比UUID、GUID等短的唯一id。所以我的意思是不从UUID开始计数,我想从一个整数0、1、2..N开始计数,然后散列等整数。我得到了。是的,它是唯一的。如果没有表ma,它也是无用的将UUID映射到整数。