对于两个不同的字符串,farm_fingerprint值在BigQuery中是相同的。知道为什么吗?它返回-2660876244907183769
SELECT id1, id2, id1=id2 AS is_equal
FROM (SELECT FARM_FINGERPRINT(TO_JSON_STRING(STRUCT('19BD0AF0854E2B90E10080000A802438','599D7E2A47B31E20E10080000A7824B8','001','020','100'))) AS id1,
FARM_FINGERPRINT(TO_JSON_STRING(STRUCT('DCE500729B5800F0E10080010A7824BA','5AF0A97293195320E10080010A782421','001','001','110'))) AS id2)发布于 2021-11-24 04:15:28
通常,在任何64位哈希中查找冲突都是非常简单的。因此,当大量的值被索引时,64位散列都不能保证您的唯一性。FARM_FINGERPRINT使用64位哈希算法的农哈希库中的Fingerprint64函数,所以您可以使用一个不同的哈希函数,比如MD5、SHA256、SHA512等等,因为它更标准化。见更多散列函数。
同样,对于这个类似的问题,也打开了一个公共问题跟踪器,但是它最终被关闭了,因为使用任何哈希算法的冲突都一定会发生。但可能还需要很长时间。请参阅https://crypto.stackexchange.com/questions/47809/why-havent-any-sha-256-collisions-been-found-yet
https://stackoverflow.com/questions/70089319
复制相似问题