BigQuery FARM_FINGERPRINT cas de Collision

0

La question

Le farm_fingerprint valeur dans BigQuery est de même pour les deux chaînes. Des Idées pourquoi? Il retourne -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

La meilleure réponse

0

En général c'est assez trivial de trouver des collisions en tout 64 bits de hachage. Donc, aucune de 64 bits hachages peut vous garantir l'unicité lors de la grande quantité de valeurs est indexé. FARM_FINGERPRINT utilise Fingerprint64 fonction dans farmhash de la bibliothèque qui est un 64 bits, l'algorithme de hachage, de sorte que vous pourriez aussi bien utiliser une autre fonction de hachage comme MD5, SHA256, SHA512, etc. car il est plus standardisé. Voir plus de fonctions de hachage.

Aussi une question d'intérêt public tracker a été ouverte au sujet de ce problème similaire, mais il a finalement été fermé depuis les collisions à l'aide de tout algorithme de hachage est lié à arriver. Mais ça peut être un temps très long. Voir https://crypto.stackexchange.com/questions/47809/why-havent-any-sha-256-collisions-been-found-yet

2021-11-24 05:20:21

Merci pour les précisions!
Shawn

@Shawn, si cela répond à votre question, envisager d'accepter en cliquant sur la case à cocher sur le côté gauche. Également voir Que dois-je faire lorsque quelqu'un répond à ma question?
Dondi

Dans d'autres langues

Cette page est dans d'autres langues

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