Ghid pentru Generator hash
Ce sunt hash-urile criptografice și HMAC, ce algoritmi calculează Generator hash de la XGM și când mai sunt acceptabile MD5 și SHA-1 și când nu.
Ce face o funcție de hash
O funcție criptografică de hash transformă o intrare de orice dimensiune într-o ieșire de dimensiune fixă, numită digest. Funcțiile de hash bune sunt unidirecționale (nu puteți recupera intrarea din digest), rezistente la coliziuni (nu puteți găsi două intrări cu același digest) și sensibile la schimbare (inversarea unui singur bit schimbă aproximativ jumătate dintre biții ieșirii). Aceste proprietăți fac hash-urile utile pentru sume de control, semnături, eliminarea duplicatelor și verificări de integritate. Lungimea digestului este mereu aceeași: fie că intrarea este o singură literă, fie că are gigaocteți, SHA-256 produce în ambele cazuri o valoare de 256 de biți.
Un hash nu este o criptare. Nu există nicio cheie și nimic de decriptat; digestul doar identifică intrarea. Intrările scurte sau previzibile, precum parolele obișnuite, pot fi găsite prin calcularea hash-ului unor variante și compararea rezultatelor, motiv pentru care hash-ul singur nu protejează secretele. Din același motiv, nici digestul unei adrese de e-mail sau al unui număr de telefon nu este anonim, pentru că întregul set de valori posibile poate fi parcurs și potrivit.
Cum folosiți Generator hash
- Deschideți Generator hash și scrieți sau lipiți un text. Apăsați Încarcă exemplu ca să vedeți clasica propoziție de test.
- Digesturile pentru fiecare algoritm apar sub formă de șiruri hexazecimale.
- Pentru digesturi HMAC, bifați "HMAC cu cheie secretă" și introduceți cheia.
- Copiați digestul de care aveți nevoie sau exportați-le pe toate.
Textul este hashuit ca UTF-8. Același text într-o altă codare, sau cu un caracter de linie nouă adăugat la final de editor, produce un digest diferit. Când comparați cu un digest obținut dintr-un instrument din linia de comandă, asigurați-vă că ambele părți calculează hash-ul exact pe aceiași octeți. Cele mai frecvente două diferențe sunt un caracter de linie nouă invizibil și terminațiile de linie CRLF folosite de Windows.
# no trailing newline: printf, not echo
printf '%s' 'The quick brown fox jumps over the lazy dog' | sha256sum
d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592 -
# HMAC-SHA256
printf '%s' 'message' | openssl dgst -sha256 -hmac 'secret-key'Algoritmii și când îi folosiți
| Algoritm | Dimensiunea digestului | Stare | Folosiți-l pentru |
|---|---|---|---|
| MD5 | 128 de biți (32 hex) | Compromis: coliziunile sunt practicabile | Sume de control fără rol de securitate, identificatori vechi |
| SHA-1 | 160 de biți (40 hex) | Compromis: coliziunile au fost demonstrate | Doar compatibilitate cu sisteme vechi |
| SHA-256 | 256 de biți (64 hex) | Sigur | Verificări de integritate, semnături, uz general |
| SHA-384 | 384 de biți (96 hex) | Sigur | Acolo unde politicile cer digesturi SHA-2 mai mari |
| SHA-512 | 512 biți (128 hex) | Sigur | Uz general; adesea rapid pe sisteme pe 64 de biți |
| SHA3-224 până la SHA3-512 | 224 până la 512 de biți | Sigur | Acolo unde o politică cere anume SHA-3 (FIPS 202); calculat de pagină, nu de Web Crypto |
"Compromis" înseamnă că un atacator poate crea două intrări diferite cu același digest. Asta contează oriunde un hash este folosit pentru a acorda încredere unui conținut, precum în certificate, în semnarea codului sau în integritatea documentelor. Contează mult mai puțin pentru detectarea coruperii accidentale a unei descărcări, unde nimeni nu încearcă să fabrice o coliziune, motiv pentru care pentru unele fișiere se publică și astăzi sume de control MD5. Chiar și așa, la o lucrare nouă alegeți SHA-256: nu este vizibil mai lent și vă scutește de schimbarea algoritmului mai târziu.
Nu stocați niciodată parolele ca hash-uri simple
HMAC: hash-uri cu o cheie
HMAC (RFC 2104) combină o funcție de hash cu o cheie secretă. Destinatarul, care cunoaște aceeași cheie, recalculează HMAC-ul și compară; o potrivire dovedește că mesajul nu a fost modificat și că a fost produs de cineva care are cheia. Webhook-urile, semnarea cererilor de API și token-urile JWT cu HS256 se bazează toate pe HMAC. Un hash simplu nu oferă această garanție, pentru că oricine schimbă mesajul poate recalcula și digestul.
| Utilizare | Cum |
|---|---|
| Semnături pentru webhook-uri | Expeditorul pune HMAC-SHA256(secret, body) într-un antet; destinatarul îl recalculează |
| Semnarea cererilor de API | Un șir canonic al cererii, semnat cu un secret de acces |
| JWT HS256 | HMAC-SHA256 peste antet și sarcina utilă |
| Integritatea unui cookie sau token | Serverul semnează o valoare, ca să nu o poată modifica clienții |
Când verificați un HMAC în cod, comparați digesturile cu o funcție de comparare în timp constant, nu cu o comparare obișnuită de șiruri, ca să nu scurgeți informații prin sincronizare. Folosiți o cheie lungă și aleatorie și rotiți-o dacă există riscul să fi fost expusă. Cheia pe care o tastați în generator rămâne în pagină și nu este trimisă nicăieri. Nu puneți cheia într-un depozit de cod comun sau în cod care rulează la client; o cheie ajunsă acolo nu mai este secretă.
Utilizări zilnice ale hash-urilor
| Utilizare | Exemplu | Algoritmul de azi |
|---|---|---|
| Integritatea fișierelor | Suma de control de lângă o descărcare | SHA-256 |
| Adresare prin conținut | Obiecte Git, straturi de imagini de container | SHA-1 în depozitele Git mai vechi, SHA-256 pentru imagini |
| Cache și ETag-uri | Amprenta corpului unui răspuns | Orice hash rapid; securitatea nu este necesară |
| Eliminarea duplicatelor | Detectarea unor încărcări identice | SHA-256 |
| Subresource Integrity | integrity="sha384-…" pe etichetele de script | SHA-256, SHA-384 sau SHA-512 (base64) |
| Semnături digitale | Certificate TLS, semnarea codului | SHA-256 sau mai puternic în interiorul semnăturii |
Subresource Integrity este un bun exemplu de utilizare pentru securitate: pagina listează hash-ul așteptat al unui script încărcat de pe un CDN, iar browserul refuză să ruleze fișierul dacă hash-ul acestuia diferă. Rețineți că valorile SRI sunt digesturi codate în base64, în timp ce generatorul le arată în hexazecimal; octeții sunt aceiași, diferă doar codarea. Aceeași logică se aplică digesturilor fixate pentru imaginile de container: eticheta se poate schimba, dar digestul indică același conținut.
Verificarea descărcărilor cu sume de control
Proiectele publică adesea sume de control SHA-256 lângă fișierele de descărcat. După descărcare, calculați local hash-ul fișierului și comparați-l cu valoarea publicată. O potrivire arată că fișierul nu a fost corupt sau înlocuit, cu condiția ca suma de control să provină de pe o pagină de încredere, ideal prin HTTPS de pe site-ul propriu al proiectului, precum https://downloads.example.com. Dacă suma de control stă chiar lângă fișier, cine ajunge la acel server le poate schimba pe amândouă, așa că o listă de sume de control semnată este o garanție mult mai puternică.
# Linux
sha256sum example-installer.tar.gz
# macOS
shasum -a 256 example-installer.tar.gz
# Windows PowerShell
Get-FileHash .\example-installer.zip -Algorithm SHA256Generatorul lucrează pe textul pe care îl lipiți. Calculați local hash-ul fișierelor cu comenzile de mai sus, ceea ce evită încărcarea fișierelor mari într-o filă de browser și funcționează și offline. Dacă aveți de verificat mai multe fișiere deodată, comanda sha256sum -c validează linie cu linie o listă publicată de sume de control.
Întrebări frecvente
Textul meu este încărcat undeva?
Nu. Hashuirea rulează în browserul dumneavoastră cu Web Crypto API (MD5 în JavaScript), iar textul introdus nu este trimis nicăieri.
Poate fi inversat un hash?
Matematic, nu. Intrările scurte sau comune pot fi ghicite calculând hash-ul unor candidați, motiv pentru care hash-urile unor parole sau ale unor valori simple nu sunt secrete.
De ce diferă hash-ul meu de cel din alt instrument?
Diferă octeții: un caracter de linie nouă la final, o altă codare a textului sau terminațiile de linie Windows. Calculați hash-ul exact pe aceiași octeți de ambele părți.
Este SHA-256 sigur pentru parole?
Nu. Este prea rapid. Folosiți Argon2id, scrypt sau bcrypt, cu o sare unică pentru fiecare parolă.
Care este diferența dintre SHA-256 și SHA-512?
Dimensiunea digestului și dimensiunea internă a cuvântului. Ambele sunt funcții SHA-2 sigure; SHA-512 produce un digest mai lung și poate fi mai rapid pe procesoare pe 64 de biți.
Mai este MD5 util?
Pentru detectarea coruperii accidentale sau ca identificator fără rol de securitate, da. Pentru orice situație în care cineva ar putea crea intenționat o coliziune, nu.
Ce este o sare?
O valoare aleatorie stocată împreună cu fiecare hash de parolă, astfel încât parole identice să primească hash-uri diferite. Anulează tabelele precalculate, dar nu face lent un hash rapid.
Generatorul acceptă SHA-3?
Da. Activați “Afișează și SHA-3” și se adaugă SHA3-224, SHA3-256, SHA3-384 și SHA3-512. Web Crypto nu are SHA-3, așa că aceste patru digesturi sunt calculate de implementarea FIPS 202 a paginii; este mai lent decât hash-urile native, motiv pentru care sunt oprite implicit.
De ce există ieșiri de lungimi diferite pentru același text?
Fiecare algoritm are o dimensiune fixă a digestului: 32 de caractere hexazecimale pentru MD5, 40 pentru SHA-1, 64 pentru SHA-256, 96 pentru SHA-384 și 128 pentru SHA-512. Lungimea nu spune nimic despre dimensiunea intrării.
Pot calcula hash-ul unui fișier cu acest instrument?
Da. “Calculează hash-ul unui fișier” citește fișierul în browserul dumneavoastră și îi calculează hash-ul octet cu octet exact cum ar face-o local sha256sum, shasum -a 256 ori Get-FileHash; nimic nu este încărcat. Pentru fișiere foarte mari, un instrument de linie de comandă rămâne mai rapid.
Cât de lungă ar trebui să fie o cheie HMAC?
Cel puțin cât digestul, de exemplu 32 de octeți aleatorii pentru HMAC-SHA256. Cheile mai lungi nu strică; cele scurte și ușor de ghicit, da.