BigQuery FARM_FINGERPRINT caso di Collisione

0

Domanda

Il farm_fingerprint valore in BigQuery è uguale per le due stringhe diverse. Tutte le Idee perché? Restituisce -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

Migliore risposta

0

In generale, è piuttosto banale per trovare collisioni a 64 bit di hash. Così, nessuno dei 64 bit hash in grado di garantire unicità di grandi quantità di valori è indicizzato. FARM_FINGERPRINT utilizza Fingerprint64 funzione in farmhash biblioteca che è un 64bit algoritmo di hash, quindi si potrebbe anche usare una diversa funzione hash come MD5, SHA256, SHA512, etc. come è più standardizzato. Vedere più funzioni di hash.

Anche un pubblico issue tracker è stato aperto per quanto riguarda questo problema analogo, ma alla fine si è chiuso dal collisioni utilizzando un qualsiasi algoritmo di hash è destinato ad accadere. Ma potrebbe essere un tempo molto lungo. Vedere https://crypto.stackexchange.com/questions/47809/why-havent-any-sha-256-collisions-been-found-yet

2021-11-24 05:20:21

Grazie per il chiarimento!
Shawn

@Shawn, se questo risponde alle tue domande, prendere in considerazione accettando di esso, fare clic sul segno di spunta sul lato sinistro. Vedere anche Cosa si deve fare quando qualcuno risponde alla mia domanda?
Dondi

In altre lingue

Questa pagina è in altre lingue

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