BigQuery FARM_FINGERPRINT碰撞的情况下

0

的问题

该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)
google-bigquery hash
2021-11-24 00:09:05
1

最好的答案

0

一般这是相当容易找到冲突的任何64位的散列。 因此,没有64位的散列可以向你保证独特性当大量的价值是编制索引。 FARM_FINGERPRINT使用 Fingerprint64功能在farmhash图书馆 ,这是64位的散列算法,所以你还不如使用一个不同的散列函数如MD5,SHA256、SHA512,等等。 因为它的更多的标准化。 看到 更多的散列函数.

也是一个 公共问题跟踪 开关于这个类似的问题,但它最终被封闭,因为冲突使用的任何散列算法定要发生。 但是,它仍然可能是一个很长的时间。 看看 https://crypto.stackexchange.com/questions/47809/why-havent-any-sha-256-collisions-been-found-yet

2021-11-24 05:20:21

谢谢你的澄清的!
Shawn

@肖恩,如果这个回答你的问题,考虑接受它通过点击检查的标记上的左侧。 还看到 什么我应该做的时候,有人回答我的问题?
Dondi

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................