Puncte:0

Se caută o funcție hash (nu neapărat criptografică) în care intrări similare returnează ieșiri diferite

drapel in

Am nevoie să iau un șir și să returnez o culoare. O cerință este ca același nume să returneze întotdeauna aceeași culoare. O alta este că nume similare nu ar trebui să returneze culori similare.

Înțeleg că o proprietate a funcțiilor hash criptografice este că micile modificări ale intrării au ca rezultat modificări mari ale ieșirii (difuzie). Aceasta pare a fi proprietatea de care am nevoie. Cu toate acestea, nu am nevoie ca funcția de hashing să fie criptografică este orice alt sens (poate fi ușor reversibilă).

Are cineva sugestii despre cum să scrieți o funcție cu această proprietate? Există funcții criptografice existente pe care le-aș putea folosi? Mulțumesc.

drapel kr
MD5 (în ciuda faptului că nu este recomandat în scopuri criptografice, se potrivește cerințelor dvs.), SHA-256, SHA-512, BLAKE2, Whirlpool - toate cerințele suitei pe care le-ați descris.
solowt avatar
drapel in
E grozav, mulțumesc. Știți dacă există funcții hash non criptografice care au proprietățile de care am nevoie?
Mark avatar
drapel ng
@solowt există, dar nu este clar dacă ar fi mai ușor de utilizat. Există cel puțin două concepte relevante: Unul este cel al unei „hărți haotice” --- mici modificări ale intrării duc la schimbări mari în ieșire. Celălalt este de o plimbare aleatorie care „se amestecă repede”, de ex. (ca un hash criptografic) ne putem aștepta ca rezultatul după câteva iterații să arate uniform. Singurul motiv pentru care nu aș folosi o funcție hash este dacă aș avea deja o implementare funcțională și aș fi observat că apelurile funcției hash au nevoie de optimizare. Funcțiile hash criptografice sunt totuși surprinzător de rapide.
Mark avatar
drapel ng
de menționat, de asemenea, că nu știu suficient despre implicațiile „de la raft” ale celor două concepte pe care le-am descris. Există multe pentru funcții hash, desigur.
drapel kr
@solowt: MD5 nu este sigur din punct de vedere criptografic.A fost conceput pentru scopuri criptografice. Dar are o rezistență slabă la coliziune și nu este utilizat în niciun caz serios de utilizare criptografică.
jthill avatar
drapel cn
Doar crc32 face aproape exact ceea ce cereți.
solowt avatar
drapel in
Multumesc tuturor. Voi căuta în crc32 și md5. Apreciez ajutorul.
kelalaka avatar
drapel in
Vot închide această întrebare, deoarece nu este vorba despre funcțiile hash criptografice. Acest lucru se potrivește mai bine CS.
solowt avatar
drapel in
Vă mulțumim pentru ajutor KELALAKA, apreciați, continuați treaba bună.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.