我想存储大约 20 亿个字符串的哈希值。为此,我想使用尽可能少的存储空间。
考虑一个理想的散列算法,它将散列返回为一系列十六进制数字(如 md5 散列)。据我了解这个想法,这意味着我需要哈希不小于且不超过 8 个符号的长度。因为这样的散列能够散列 4+ 十亿(16 * 16 * 16 * 16 * 16 * 16 * 16 * 16)不同的字符串。
所以我想知道将哈希切割到一定长度以节省空间是否安全?(当然,哈希不应该冲突)
是/否/也许-我希望能提供相关研究的解释或链接的答案。
Ps - 我知道我可以测试 8 个字符的哈希是否可以存储 20 亿个字符串。但我需要将 20 亿个哈希值与它们的 20 亿个切割版本进行比较。这对我来说似乎并不重要,所以我最好在这样做之前先问清楚。