Generatore di hash SM3

Calcoli i digest SM3 — GB/T 32905-2016, lo standard nazionale cinese per l'hash crittografico — di testi o file interamente nel suo browser. SM3 semplice o HMAC-SM3 con chiave, output esadecimale o Base64, con una corsia SHA-256 affiancata per il confronto. Nulla viene caricato.
AlgoritmoDigest
SM3–
SHA-256 (corsia di confronto, solo origine testo)–
Dettagli–
Verifica incrociata da riga di comando — il digest che questa pagina stampa per un file corrisponde byte per byte a openssl dgst -sm3 file.bin (OpenSSL 1.1.1+) e a gmssl dgst -sm3 file.bin. Per HMAC-SM3: openssl dgst -sm3 -hmac <key> con una chiave testuale.
Autotest
Riesegue il motore della pagina sui vettori ufficiali dell'appendice A della GB/T 32905-2016, sui vettori HMAC-SM3 della GB/T 15852.2 (ISO/IEC 9797-2), su un'esecuzione incrementale a blocchi da 1000 byte, sui due pool di esempio, sulla corsia Base64 confrontata con il codificatore del browser, e sui percorsi negativi (una chiave esadecimale malformata deve essere respinta). Nulla viene inviato da nessuna parte.
Che cos'è SM3?
In una frase: SM3 è l'hash crittografico dell'ente nazionale di standardizzazione cinese — un hash Merkle–Damgård a 256 bit della stessa famiglia strutturale di SHA-256, ma con valori iniziali, costanti di round, funzioni booleane e un'espansione del messaggio a 68 parole tutti propri, pubblicato come GM/T 0004-2012 e poi GB/T 32905-2016.
SM3 contro SHA-256 in breve
AspettoSM3SHA-256
Dimensione del digest / del blocco / della parola256 / 512 / 32 bit256 / 512 / 32 bit
Round di compressione6464
Espansione del messaggioW[0..67] + W'[0..63] derivate, permutazione P1W[0..63] con rotazioni σ0/σ1
Costanti di rounddue costanti T0..15=0x79CC4519, T16..63=0x7A879D8A, ruotate di j64 costanti K[0..63]
Funzioni booleaneFF/GG cambiano al round 16Ch/Maj per tutto il percorso
Ordine dei bytebig-endianbig-endian
Pubblicato2010 (GM/T 0004-2012; GB/T 32905-2016)2001 (FIPS 180-2)
Stato internazionaleincluso in ISO/IEC 10118-3:2018FIPS 180-4

Stesso scheletro, muscoli diversi: entrambi gli algoritmi spezzano il messaggio in blocchi da 512 bit ed eseguono 64 round di mescolamento su otto registri a 32 bit, ma ogni costante, ogni quantità di rotazione e il passo di espansione del messaggio differiscono, quindi producono digest completamente non correlati per lo stesso input. SM3("abc") è 66c7f0f4...8f4ba8e0 mentre SHA-256("abc") è ba7816bf...f20015ad — provi entrambi con il pulsante Esempio.

«Standard nazionale» significa più sicuro?

No — e non è il suo compito. SM3 offre una sicurezza paragonabile a SHA-256: un digest a 256 bit, nessun attacco pratico di collisione o di preimmagine noto. La ragione per cui SM3 esiste è l'indipendenza della suite e la conformità normativa: le norme cinesi sulla crittografia commerciale (商用密码, «SM») richiedono la suite nazionale nei settori certificati — banche, pubblica amministrazione, infrastrutture di telecomunicazione — affinché l'intero stack (hash, firma, cifrario) sia controllato da un unico processo di standardizzazione nazionale anziché da quelli esteri. Fuori da quel contesto SHA-256 e SM3 sono intercambiabili per robustezza; scelga SM3 quando la sua controparte, il regolatore o il protocollo (per esempio TLS 1.3 con le suite SM dell'RFC 8998) lo richiede.

Dove si colloca SM3 all'interno della suite SM
  • SM3 (questa pagina) — l'hash. È anche il digest all'interno delle firme SM2 (il valore ZA) e la KDF della cifratura SM2.
  • SM4 — il cifrario a blocchi a 128 bit (pensi a «AES nazionale»), ECB/CBC nella pagina SM4 di questa famiglia.
  • SM2 — l'algoritmo di firma e cifratura a curve ellittiche sulla curva sm2p256v1, costruito su SM3.
  • SM9 — crittografia basata sull'identità: il suo indirizzo e-mail è la sua chiave pubblica.
Errori comuni
  • Fare l'hash delle password con SM3. SM3 è un hash veloce di uso generale, come SHA-256 — miliardi di tentativi al secondo su una GPU. Per la memorizzazione delle password usi bcrypt, scrypt, Argon2id o PBKDF2 dal Generatore di hash per password.
  • Presumere che qui conti il vecchio ordine C1C2C3. L'ordine del ciphertext è un tema di SM2; SM3 non ha questa complicazione. Il suo output è sempre di 32 byte.
  • Confondere GM/T 0004-2012 e GB/T 32905-2016. Stesso algoritmo, stessi vettori di test — GM/T è la pubblicazione standard di settore, GB/T quella nazionale. Anche ISO/IEC 10118-3:2018 la riporta.
  • Fidarsi, ma verificare. L'autotest di questa pagina riesegue i vettori dell'appendice dello standard stesso; se non dice «0 falliti», non si fidi dell'output.
FAQ

SM3 è disponibile in OpenSSL? Sì — OpenSSL 1.1.1 e successivi: openssl dgst -sm3 file, HMAC tramite -hmac. GmSSL (il fork cinese) lo ha da più tempo. Questa pagina non richiede nessuno dei due: l'algoritmo gira nel suo browser.

A cosa serve HMAC-SM3? Autenticazione dei messaggi: un digest che prova anche chi l'ha inviato, perché solo chi possiede la chiave condivisa può produrlo. Standardizzato in GB/T 15852.2 / ISO/IEC 9797-2. La chiave può avere qualsiasi lunghezza; oltre 64 byte viene prima sottoposta ad hash.

Perché la corsia del file non mostra il confronto SHA-256? Il confronto usa il digest one-shot WebCrypto integrato del browser, che richiede l'intero input in memoria — va bene per il testo, non per un file di 200 MB trasmesso a blocchi. SM3 stesso viene calcolato in modo incrementale e qui non ha tale limite.

Posso ottenere il digest in Base64? Sì — con il selettore Formato di output. Entrambe le corsie di ogni risultato possono essere copiate o scaricate come piccolo rapporto di testo.