Generator hash

Calculează rezumatele MD5, SHA-1, SHA-256, SHA-384, SHA-512, SHA-3, Keccak-256, RIPEMD-160, BLAKE2b sau BLAKE2s ale oricărui text sau fișier — utile pentru sume de control, verificări de integritate și chei de cache. Se lipește un rezumat așteptat pentru a-l verifica față de intrare, sau se lipește un șir de hash necunoscut pentru a identifica din ce algoritm probabil provine. SHA-1/256/384/512 vin din WebCrypto-ul nativ al browserului; restul sunt implementări JavaScript pure și independente, astfel că totul rulează local. A se vedea și Generatorul de numere aleatorii pentru secvențe aleatorii cu sămânță.
Rulează integral local — nimic nu se încarcă. Intrările de până la 200 MB.
Intrare: Algoritmi:
Format ieșire: SHA-1 este învechit — se preferă SHA-256/512, dacă nu este nevoie de el.
Liniile de rezumat au forma „ALGORITM  hash”, astfel încât să poată fi copiate în note de lansare sau în manifeste de descărcare.
Se lipește rezumatul pe care l-a dat o pagină de descărcare sau un manifest. Instrumentul acceptă majuscule și minuscule, spații, două puncte, prefixe de tip sha256=, învelișuri de tip MD5 (file.exe) = și ieșirea md5sum pe mai multe rânduri, apoi o compară cu algoritmii bifate mai sus.
Se lipește un șir de hash necunoscut. Instrumentul îi citește lungimea, setul de caractere și prefixele și enumeră algoritmii care l-ar fi putut produce — de la un rezumat hexazecimal simplu până la hash-uri de parolă în stil PHC, precum $2b$… sau $argon2id$….
Alegerea unui algoritm:
SHA-256 este alegerea rezonabilă implicită pentru verificări de integritate astăzi. SHA-512 este mai puternic și rulează mai rapid pe hardware pe 64 de biți, cu prețul unei ieșiri mai lungi; SHA-384 este varianta de mijloc atunci când se dorește un rezumat SHA-2 cu lungime trunchiată. SHA-3 este un standard NIST proiectat independent (nu o îmbunătățire a SHA-2) și este răspunsul standard atunci când se dorește un algoritm fără descendență comună cu SHA-2; Keccak-256 este varianta dinaintea standardului, folosită de Ethereum și de câteva alte sisteme, și diferă de SHA3-256 printr-un octet de padding. BLAKE2b/BLAKE2s sunt hash-uri moderne rapide, proiectate pentru utilizarea în software; RIPEMD-160 este un design mai vechi, folosit încă în contexte Bitcoin și OpenPGP. SHA-1 și MD5 sunt sparte criptografic pentru intrări ostile, dar rămân corecte și larg folosite pentru deduplicare, sisteme vechi și sume de control neadversare — nu se folosesc niciodată acolo unde un atacator ar putea alege conținutul. Niciun hash de astăzi nu este „rezistent la computerele cuantice” în sensul în care computerele cuantice amenință mai întâi semnăturile și schimbul de chei — algoritmul lui Grover înjumătățește doar lungimea efectivă a hash-ului, așa că SHA-256 se află deja confortabil peste limita practică. Hash-urile sunt deterministe: aceiași octeți dau întotdeauna același rezumat, ceea ce le face utile tocmai pentru verificarea faptului că o descărcare sau un fișier de configurare este intact.
Hash-ul național chinez?
SM3 (GB/T 32905-2016), rezumatul prescris în criptografia comercială chineză, nu face parte din această pagină — are propriul instrument, cu suport HMAC-SM3, pe pagina Generatorul de hash-uri SM3, alături de restul suitei SM: SM4 (cifru pe blocuri), SM2 (semnături și criptare) și SM9 (criptografie bazată pe identitate).
Generator de hash-uri — fiecare algoritm explicat de la zero
Într-o propoziție: o funcție hash criptografică este un blender cu sens unic — primește oricâte octeți și îi strânge într-o amprentă de lungime fixă, astfel încât aceeași intrare dă întotdeauna aceeași amprentă, dar amprenta nu spune nimic despre cum s-ar putea reconstrui intrarea. Această pagină rulează unsprezece dintre ele integral în fila browserului.

Fiecare algoritm de mai jos este explicat în aceiași patru pași: ce este, în cuvinte simple, intuiția funcționării fără formule, dacă ar trebui folosit și astăzi și greșelile pe care oamenii le fac cel mai des cu el.

MD5

Ce este. MD5 (1992) comprimă orice intrare într-o amprentă de 128 de biți (32 de caractere hexazecimale). A fost proiectat să fie rapid pe calculatoarele anilor 1990, și chiar este — tocmai de aceea este încă peste tot: pagini de descărcare de software, cache-uri de deduplicare a fișierelor, chei de baze de date vechi.

Cum funcționează, intuitiv. Intrarea se taie în blocuri de 64 de octeți. Fiecare bloc este amestecat într-o stare glisantă de 128 de biți de patru ori la rând (patru runde de amestec ușor diferite), iar după ultimul bloc starea se afișează ca rezumat. Amestecul este construit din adunări, rotații și căutări în tabele — ieftin atunci, ieftin acum.

Ar trebui să se folosească? Pentru sume de control unde nimeni nu încearcă să păcălească destinatarul — detectarea unei descărcări corupte, găsirea fișierelor duplicate — da, încă raportează perfect corupția. Pentru orice situație adversară, nu: din 2004 cercetătorii pot construi două fișiere diferite cu același MD5 în câteva secunde, iar falsificări reale de certificate prin coliziuni MD5 au avut loc în 2008. Este un număr de serie, nu un lacăt.

Greșeli frecvente. Folosirea MD5 pentru parole (mult prea rapid — vezi Generatorul de hash-uri pentru parole pentru ce ar trebui folosit în loc); încrederea într-un fișier pentru că „MD5-ul se potrivește”, când atacatorul a publicat și el MD5-ul; și lipirea întregii linii MD5 (file) = hash în loc de doar hash-ul — caseta de verificare de mai sus acceptă ambele.

SHA-1

Ce este. SHA-1 (1995, NSA) produce un rezumat de 160 de biți (40 de caractere hexazecimale). Timp de douăzeci de ani a fost hash-ul de integritate implicit pentru Git, certificatele TLS și semnăturile PGP.

Cum funcționează, intuitiv. Aceeași rețetă de familie ca MD5, dar cu o stare de 160 de biți, 80 de runde de amestec pe bloc de 64 de octeți și un set mai larg de operații. Rundele suplimentare trebuiau să facă blenderul mai greu de inversat prin inginerie inversă.

Ar trebui să se folosească? Nu, pentru orice situație adversară. Spargerea teoretică a devenit practică în 2017, când Google a produs două fișiere PDF diferite cu valori SHA-1 identice (atacul SHAttered, de aproximativ 6500 de ani-CPU). Git încă stochează obiectele sub SHA-1, dar îl tratează doar ca identificator și a adăugat de atunci detectarea coliziunilor. Pentru lucrări noi se folosește SHA-256 sau SHA-3.

Greșeli frecvente. Să se creadă că 160 de biți „sunt încă destul de lungi” — spargerea ține de structura internă, nu de forța brută; și confundarea RIPEMD-160 cu SHA-1 pentru că ambele au 40 de caractere hexazecimale (caseta de identificare de mai sus le deosebește).

SHA-2: SHA-256, SHA-384 și SHA-512

Ce este. Familia SHA-2 (2001, NSA) este calul de povară al verificării moderne a integrității. SHA-256 dă 256 de biți (64 de caractere hexazecimale), SHA-512 dă 512 biți, iar SHA-384 este SHA-512 cu rezultatul tăiat la 384 de biți — util când un protocol impune o etichetă mai scurtă.

Cum funcționează, intuitiv. Blocurile de 64 de octeți (sau de 128 de octeți pentru variantele de 512 biți) sunt îndoite într-o stare de 8 cuvinte prin 64 (sau 80) de runde de pași adunare-rotație-amestec. Spre deosebire de MD5, programarea întâi întinde fiecare bloc într-un buffer extins, iar aceasta este ceea ce a învins stilul de atac care a spart MD5 și SHA-1. O curiozitate care merită cunoscută: pe procesoarele pe 64 de biți SHA-512 este mai rapid decât SHA-256, pentru că prelucrează de două ori mai multe date pe rundă, cu aritmetică pe 64 de biți.

Ar trebui să se folosească? Da — SHA-256 este răspunsul implicit pentru sume de control ale fișierelor, semnarea codului și amprentele certificatelor astăzi, fără nicio spargere practică cunoscută după două decenii de analiză. SHA-384/512 se folosesc atunci când se dorește mai multă marjă sau când platforma le rulează mai rapid.

Greșeli frecvente. Folosirea doar a SHA-256 pentru parole — este un hash rapid, iar viteza este dușmanul aici (se folosesc bcrypt/scrypt/Argon2id); și confundarea lungimii rezumatului cu puterea pentru setările de rezistență la coliziuni adversare — lungimea stabilește doar plafonul.

SHA-3 (SHA3-256 / SHA3-512) și Keccak-256

Ce este. SHA-3 (2015, standardizat din trimiterea Keccak de Bertoni, Daemen, Peeters și Van Assche) este al treilea standard NIST pentru hash-uri. Nu are nimic în comun cu structura internă a SHA-2 — a fost ales tocmai ca un rezerv independent, în cazul în care SHA-2 ar cădea vreodată.

Cum funcționează, intuitiv. În loc să amestece blocuri printr-o stare mică, Keccak „înmoaie și stoarce” în mod repetat: intrarea este absorbită bit cu bit într-un burete de 5×5×64 de biți, întregul burete este amestecat printr-o permutare fixă (24 de runde de operații pe biți peste întreaga stare), iar apoi biții rezumatului sunt storși afară. Imaginea cu buretele este întreaga idee: biții de capacitate nu se scot niciodată, iar ei sunt cei care fac funcția ireversibilă.

Keccak-256 față de SHA3-256. Diferă exact printr-un octet de padding. Trimiterea originală a echipei Keccak a completat ultimul bloc cu 0x01; NIST a schimbat padding-ul standard în 0x06 (separarea domeniilor, pe care o folosesc variantele Keccak din epoca SHA-2). Ethereum a adoptat padding-ul original, astfel că „keccak256”-ul său diferă de SHA3-256-ul standard pentru fiecare intrare. Această pagină le oferă pe ambele, bifate separat.

Ar trebui să se folosească? Da — fie ca primă alegere când politica cere un algoritm care nu este din familia SHA-2, fie oriunde ecosistemul îl vorbește deja. Greșeli frecvente: presupunerea că SHA3-256 și Keccak-256 sunt interschimbabile (nu sunt — compară cele două rânduri pe care le produce această pagină pentru aceeași intrare); și presupunerea că „SHA-3” îl înlocuiește pe SHA-2 — ambele sunt sigure, SHA-2 rămâne cel mai răspândit.

RIPEMD-160

Ce este. RIPEMD-160 (1996, consorțiul RIPE al academicienilor europeni, consolidat de Dobbertin, Bosselaers și Preneel) produce 160 de biți. Este un design în întregime european, independent în mod deliberat de familia SHA proiectată de NSA.

Cum funcționează, intuitiv. Fiecare bloc de 64 de octeți este procesat de două linii paralele de câte 80 de runde, cu constante și cantități de rotație diferite; la final cele două linii și starea veche se combină. Structura cu două trasee a fost modul prin care proiectanții au rezistat atacurilor diferențiale care spărgeau alte hash-uri din anii 1990.

Ar trebui să se folosească? În practică supraviețuiește mai ales în alte sisteme: cheile publice Bitcoin sunt hash-uite cu RIPEMD-160(SHA-256(pk)), cheile OpenPGP mai vechi îl oferă ca opțiune de hash, iar el este hash-ul tradițional pentru piesele BitTorrent v1, alături de SHA-1. Nu are un atac practic de coliziune, dar dimensiunea de 160 de biți îi dă cea mai mică marjă de siguranță de pe această pagină. Pentru utilizarea nouă de sine stătătoare se preferă SHA-256 sau SHA-3.

Greșeli frecvente. Să se creadă că cele două linii paralele îl fac „de două ori mai puternic” — mărimea rezultatului este cea care limitează rezistența la coliziuni; și confundarea cu SHA-1 (aceeași lungime de 40 de caractere hexazecimale; caseta de identificare de mai sus listează ambele posibilități una lângă alta).

BLAKE2b-512 și BLAKE2s-256

Ce este. BLAKE2 (2013, Aumasson, Neves, Wilcox-O’Hearn și Winnerlein) este un hash proiectat pentru viteza software: BLAKE2b vizează platformele pe 64 de biți cu ieșire de până la 512 biți, iar BLAKE2s vizează platformele pe 32 de biți cu ieșire de până la 256 de biți.

Cum funcționează, intuitiv. Descinde din finalistul SHA-3 BLAKE, al cărui nucleu este o permutare cu cheie împrumutată de la cifrul-flux ChaCha: o matrice 4×4 de cuvinte este amestecată prin alternarea pașilor de amestec pe coloane și pe diagonale — ca și cum o grilă ar fi amestecată mai întâi de sus în jos, apoi de-a lungul diagonalelor — pentru 12 (BLAKE2b) sau 10 (BLAKE2s) runde pe bloc. Deoarece acești pași se mapează foarte bine pe instrucțiunile procesorului, BLAKE2 este adesea mai rapid decât MD5, oferind în același timp o securitate comparabilă cu SHA-3.

Ar trebui să se folosească? Da — este un design complet modern, nespart, popular în software sensibil la performanță (integritatea pachetelor în unele ecosisteme, stocare adresată prin conținut, deduplicare de backup) și ca MAC rapid. Pe această pagină, BLAKE2b-512 dă cele mai lungi rezumate, iar BLAKE2s-256 este varianta modernă compactă.

Greșeli frecvente. Gândirea că „mai rapid înseamnă mai slab” — BLAKE2 este mai rapid prin proiectare, nu prin tăierea colțurilor; și faptul că nu se știe că BLAKE2 acceptă și o cheie (devenind un MAC) sau un șir de personalizare — această pagină îl folosește întotdeauna în mod simplu, fără cheie.

Citirea casetelor Verificare și Identificare

Verificare. Caseta de verificare normalizează orice se lipește — majuscule sau minuscule, două puncte la fiecare două cifre, un prefix sha256=, învelișul de tip BSD SHA256 (file) = hash, o linie GNU md5sum cu numele fișierului după hash, \r\n rătăcite — apoi recalculează fiecare algoritm bifat pe intrarea curentă (text sau fișierul ales) și raportează fiecare algoritm care se potrivește. O potrivire verde înseamnă „acești octeți sunt exact ceea ce a hash-uit editorul”; roșu înseamnă că niciunul dintre algoritmii aleși nu l-a produs — se încearcă bifarea mai multor algoritmi sau se verifică dacă lipirea a fost trunchiată.

Identificare. Caseta de identificare nu calculează niciun hash; ea citește forma șirului. Lungimea restrânge candidații: 32 de caractere hexazecimale pot fi MD5, 40 pot fi SHA-1 sau RIPEMD-160, 64 pot fi SHA-256 / SHA3-256 / Keccak-256 / BLAKE2s-256, 96 SHA-384, 128 SHA-512 / SHA3-512 / BLAKE2b-512. Prefixele arată hash-urile de parolă ($2a$/$2b$/$2y$ bcrypt, $argon2id$, $scrypt$, $6$ sha512crypt, $1$ MD5-crypt) — acestea sunt o altă specie (a se vedea Generatorul de hash-uri pentru parole) și nu sunt calculate în mod deliberat de această pagină. Un șir cu +, / și =, a cărui lungime este multiplu de 4, este mai probabil date codificate în Base64 decât un rezumat hexazecimal; instrumentul îl decodează și raportează lungimea în octeți pe care ar corespunde.

Ce poate și ce nu poate spune identificarea. Lungimea și setul de caractere sunt amprente ale formatului, nu dovada algoritmului: două șiruri de 64 de caractere hexazecimale pot proveni de la SHA-256 sau de la SHA-512 trunchiat. Identificatorul ordonează posibilitățile; caseta de verificare este cea care dovedește cu care algoritm se potrivesc de fapt octeții.

Toți cei unsprezece dintr-o privire
Algoritm Digestie Inventat Rezumatul pentru „The quick brown fox jumps over the lazy dog”
MD5128 biți19929e107d9d372bb6826bd81d3542a419d6
SHA-1160 biți19952fd4e1c67a2d28fced849ee1bb76e7391b93eb12
SHA-256256 biți2001d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592
SHA-384384 biți2001ca737f1014a48f4c0b6dd43cb177b0afd9e5169367544c494011e3317dbf9a509cb1e5dc1e85a941bbee3d7f2afbc9b1
SHA-512512 biți200107e547d9586f6a73f73fbac0435ed76951218fb7d0c8d788a309d785436bbb642e93a252a954f23912547d1e8a3b5ed6e1bfd7097821233fa0538f3db854fee6
SHA3-256256 biți201569070dda01975c8c120c3aada1b282394e7f032fa9cf32f4cb2259a0897dfc04
SHA3-512512 biți201501dedd5de4ef14642445ba5f5b97c15e47b9ad931326e4b0727cd94cefc44fff23f07bf543139939b49128caf436dc1bdee54fcb24023a08d9403f9b4bf0d450
Keccak-256256 bițidinaintea anului 20154d741b6f1eb29cb2a9b9911c82f56fa8d73b04959d3d9d222895df6c0b28aa15
RIPEMD-160160 biți199637f332f68db77bd9d7edd4969571ad671cf9dd3b
BLAKE2b-512512 biți2013a8add4bdddfd93e4877d2746e62817b116364a1fa7bc148d95090bc7333b3673f82401cf7aa2e4cb1ecd90296e3f14cb5413f8ed77be73045b13914cdcd6a918
BLAKE2s-256256 biți2013606beeec743ccbeff6cbcdf5d5302aa855c256c29b88c8ed331ea1a6bf3c8812

Fiecare rezumat din tabelul de mai sus este produs de motoarele din această pagină — se bifează toți algoritmii, se apasă Mostră și se compară. Rândurile SHA-3, Keccak, RIPEMD-160 și BLAKE2 provin din nucleul auto-găzduit crypto-shared.js, folosit în toate instrumentele criptografice ale acestui site.

Întrebări frecvente

Ce casetă să fie de încredere pentru o descărcare? Caseta de verificare, cu SHA-256 bifat — majoritatea editorilor semnează astăzi cu SHA-256 sau SHA-512. Caseta de identificare doar numește variantele posibile; ea nu dovedește nimic despre fișier.

De ce este Keccak-256 în listă? Pentru că Ethereum, Swarm și câteva sisteme cu registru contabil au standardizat padding-ul dinaintea standardului. Dacă se verifică un keccak256 din Ethereum, trebuie folosit acel rând, nu SHA3-256.

Pot două intrări diferite să aibă același rezumat? În teorie, da — infinit de multe intrări se mapează într-o mulțime finită de rezumate (principiul cutiilor). În practică, găsirea unei astfel de perechi înainte de moartea termică a universului este ceea ce înseamnă „rezistența la coliziuni”, iar fiecare algoritm de mai sus, în afară de MD5 și SHA-1, rămâne în picioare.

Hash-urile sunt criptare? Nu. Criptarea se inversează cu o cheie; un hash este un blender cu sens unic. Nimic de pe această pagină nu poate fi „decriptat” înapoi în textul original — iar aceasta este o trăsătură, nu o limitare.