1) 为了实现真正低的哈希碰撞,我是否可以仅使用sha1的128位中的一半,而不必处理整个sha1?我知道这不适用于加密哈希,但我只需要将哈希用作哈希表键。
2) 计算时间不是优先考虑的问题,此外,我要对非常小的数据块进行哈希。特别地,我主要会取2或3个64位哈希值并将它们哈希以获得另一个64位哈希值。除了微小的概率之外,是否有比sha1更好的选项?
3) 我是一个sql新手。在sql中使用64位哈希作为id是否明智?64位id是否会引起sqlite或postgres的性能问题?我需要协调跨多个数据库(包括Lucene索引)的数据,所以我想应该直接在表格中处理哈希,而不必费心自增的id(这只有在一个数据库中有意义,不是所有数据存储都有)。我认为64位是一个很好的折衷:足够大来避免碰撞,但可以节省空间(和查找时间?)。
4) 那么CRC-64呢?它的分布是否足够随机?