Generator de hash SM3

Calculează digesturi SM3 — GB/T 32905-2016, standardul național chinez de hash criptografic — pentru text sau fișiere, integral în browser. SM3 simplu sau HMAC-SM3 cu cheie, cu ieșire hexazecimală sau Base64, cu o bandă SHA-256 alăturată pentru comparație. Nimic nu se încarcă.
AlgoritmDigestie
SM3–
SHA-256 (bandă de comparație, doar sursa text)–
Detalii–
Verificare din linia de comandă — digestul pe care îl afișează această pagină pentru un fișier se potrivește octet cu octet cu openssl dgst -sm3 file.bin (OpenSSL 1.1.1+) și gmssl dgst -sm3 file.bin. Pentru HMAC-SM3: openssl dgst -sm3 -hmac <cheie> cu o cheie text.
Autotest
Reia motorul paginii față de vectorii din anexa A oficială GB/T 32905-2016, vectorii HMAC-SM3 GB/T 15852.2 (ISO/IEC 9797-2), o rulare incrementală pe bucăți de 1000 de octeți, ambele seturi de exemple, banda Base64 față de codificatorul propriu al browserului și căile negative (o cheie hexazecimală malformată trebuie respinsă). Nimic nu se trimite nicăieri.
Ce este SM3?
Într-o propoziție: SM3 este funcția hash criptografică a organismului național chinez de standardizare — un hash Merkle–Damgård de 256 de biți din aceeași familie structurală cu SHA-256, dar cu propriile valori inițiale, constante de rundă, funcții booleene și o extindere a mesajului de 68 de cuvinte, publicat ca GM/T 0004-2012 și apoi GB/T 32905-2016.
SM3 vs SHA-256 dintr-o privire
AspectSM3SHA-256
Dimensiunea digestului / blocului / cuvântului256 / 512 / 32 de biți256 / 512 / 32 de biți
Runde de compresie6464
Extindere a mesajuluiW[0..67] + W'[0..63] derivat, permutarea P1W[0..63] cu rotații σ0/σ1
Constante de rundădouă constante T0..15=0x79CC4519, T16..63=0x7A879D8A, rotite cu j64 de constante K[0..63]
Funcții booleeneComutare FF/GG la runda 16Ch/Maj pe tot parcursul
Ordinea octețilorbig-endianbig-endian
Publicat2010 (GM/T 0004-2012; GB/T 32905-2016)2001 (FIPS 180-2)
Statutul internaționalinclus în ISO/IEC 10118-3:2018FIPS 180-4

Același schelet, altă musculatură: ambii algoritmi taie mesajul în blocuri de 512 biți și rulează 64 de runde de amestec peste opt registre de 32 de biți, dar fiecare constantă, fiecare valoare de rotație și pasul de extindere a mesajului diferă, așa că produc digesturi complet nelegate pentru aceeași intrare. SM3(„abc”) este 66c7f0f4...8f4ba8e0, iar SHA-256(„abc”) este ba7816bf...f20015ad — se încearcă ambele cu butonul Exemplu.

Înseamnă „standard național” mai sigur?

Nu — și nu asta este rolul lui. SM3 oferă o securitate comparabilă cu SHA-256: un digest de 256 de biți, fără atacuri practice cunoscute de coliziune sau de preimagine. Motivul existenței SM3 este independența suitei și conformitatea cu reglementările: reglementările chineze privind criptografia comercială (商用密码, „SM”) cer suita autohtonă în sectoarele certificate — bănci, administrație, infrastructură de telecomunicații — astfel încât întreaga stivă (hash, semnătură, cifru) să fie controlată de un singur proces de standardizare național, nu de unul străin. În afara acestui context, SHA-256 și SM3 sunt interschimbabile ca rezistență; se alege SM3 atunci când partenerul, reglementatorul sau protocolul (de exemplu TLS 1.3 cu suitele SM din RFC 8998) o cere.

Unde se află SM3 în suita SM
  • SM3 (această pagină) — hash-ul. Este și digestul din semnăturile SM2 (valoarea ZA) și KDF-ul criptării SM2.
  • SM4 — cifrul bloc de 128 de biți (un fel de „AES făcut național”), ECB/CBC pe pagina SM4 din această familie.
  • SM2 — algoritmul de semnătură și criptare pe curbe eliptice peste curba sm2p256v1, construit pe SM3.
  • SM9 — criptografie bazată pe identitate: adresa de e-mail este cheia publică.
Greșeli frecvente
  • Hash-uirea parolelor cu SM3. SM3 este un hash rapid de uz general, ca SHA-256 — miliarde de încercări pe secundă pe un GPU. Pentru stocarea parolelor se folosesc bcrypt, scrypt, Argon2id sau PBKDF2 din Generatorul de hash pentru parole.
  • Presupunerea că ordinea veche C1C2C3 contează aici. Ordinea textului cifrat este un subiect SM2; SM3 nu are o asemenea complicație. Ieșirea sa are mereu 32 de octeți.
  • Confuzia dintre GM/T 0004-2012 și GB/T 32905-2016. Același algoritm, aceiași vectori de test — GM/T este publicația standard din industrie, GB/T cea națională. ISO/IEC 10118-3:2018 o include de asemenea.
  • Încredere, dar verificare. Autotestul acestei pagini reia vectorii din anexele standardului; dacă nu afișează „0 eșuate”, rezultatul nu trebuie crezut.
Întrebări frecvente

Este SM3 disponibil în OpenSSL? Da — OpenSSL 1.1.1 și versiunile ulterioare: openssl dgst -sm3 file, HMAC prin -hmac. GmSSL (fork-ul chinez) îl are de mai mult timp. Pagina aceasta nu are nevoie de niciuna: algoritmul rulează în browser.

La ce folosește HMAC-SM3? Autentificarea mesajelor: un digest care dovedește și cine l-a trimis, deoarece doar deținătorii cheii comune îl pot produce. Standardizat în GB/T 15852.2 / ISO/IEC 9797-2. Cheia poate avea orice lungime; peste 64 de octeți se face mai întâi hash pe ea.

De ce banda fișierului nu afișează comparația cu SHA-256? Comparația folosește digestul one-shot WebCrypto integrat în browser, care are nevoie de întreaga intrare în memorie — bun pentru text, nu pentru un fișier de 200 MB transmis în bucăți. SM3 în sine se calculează incremental și nu are aici o astfel de limită.

Se poate obține digestul în Base64? Da — din selectorul Format de ieșire. Ambele benzi ale fiecărui rezultat pot fi copiate sau descărcate ca un mic raport text.