BigQuery FARM_FINGERPRINT caz de Coliziune

0

Problema

La farm_fingerprint valoare în BigQuery este același pentru două siruri de caractere diferite. Vreo idee de ce? Se întoarce -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

Cel mai bun răspuns

0

În general, este destul de banal pentru a găsi coliziuni în orice 64 bit hash. Deci, nici unul de 64 bit hash pot garanta unicitatea când o cantitate mare de valori este indexat. FARM_FINGERPRINT folosește Fingerprint64 funcție în farmhash de bibliotecă, care este o 64bit algoritm hash, așa că ai putea la fel de bine folosi un hash diferite funcții, cum ar fi MD5, SHA256, SHA512, etc. ca e mai standardizate. Vezi mai multe funcții hash.

De asemenea, o problemă de interes public tracker a fost deschis cu privire la această problemă similară, dar a fost în cele din urmă închis de coliziuni folosind orice algoritm hash este obligat să se întâmple. Dar ar putea fi un timp foarte lung. Vezi https://crypto.stackexchange.com/questions/47809/why-havent-any-sha-256-collisions-been-found-yet

2021-11-24 05:20:21

Multumesc pentru clarificare!
Shawn

@Shawn, dacă acest răspuns la întrebarea ta, ia în considerare acceptarea făcând clic pe bifa de pe partea stângă. Vedea, de asemenea, Ce ar trebui să fac atunci când cineva răspunde la întrebarea mea?
Dondi

În alte limbi

Această pagină este în alte limbi

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