SM3-hashgenerator

Beräkna SM3-sammandrag — GB/T 32905-2016, den kinesiska nationella kryptografiska hashstandarden — för text eller filer helt i webbläsaren. Vanlig SM3 eller nyckelad HMAC-SM3, utdata i hex eller Base64, med en jämförelsekanal för SHA-256 sida vid sida. Inget laddas upp.
AlgoritmDigestion
SM3–
SHA-256 (jämförelsekanal, endast textkälla)–
Detaljer–
Korskontroll från kommandoraden — sammandraget som denna sida skriver ut för en fil matchar openssl dgst -sm3 file.bin (OpenSSL 1.1.1+) och gmssl dgst -sm3 file.bin byte för byte. För HMAC-SM3: openssl dgst -sm3 -hmac <key> med en textnyckel.
Självtest
Kör sidmotorn igen mot de officiella GB/T 32905-2016-bilaga A-vektorerna, GB/T 15852.2 (ISO/IEC 9797-2) HMAC-SM3-vektorerna, en delad inkrementell körning på 1000 byte, båda exempelpoolerna, Base64-kanalen mot webbläsarens egen kodare, och negativa vägar (en felaktig hex-nyckel måste avvisas). Inget skickas någonstans.
Vad är SM3?
Med en mening: SM3 är den kryptografiska hashen från det kinesiska nationella standardorganet — en 256-bitars Merkle–Damgård-hash i samma strukturella familj som SHA-256, men med egna startvärden, rundkonstanter, booleska funktioner och en meddelandeutvidgning på 68 ord, publicerad som GM/T 0004-2012 och senare GB/T 32905-2016.
SM3 kontra SHA-256 i korthet
AspektSM3SHA-256
Sammandrag / block / ordstorlek256 / 512 / 32 bitar256 / 512 / 32 bitar
Komprimeringsrundor6464
MeddelandeutvidgningW[0..67] + härledda W'[0..63], P1-permutationW[0..63] med σ0/σ1-rotationer
Rundkonstantertvå konstanter T0..15=0x79CC4519, T16..63=0x7A879D8A, roterade med j64 konstanter K[0..63]
Booleska funktionerFF/GG-växling vid rund 16Ch/Maj genomgående
Byteordningbig-endianbig-endian
Publicerad2010 (GM/T 0004-2012; GB/T 32905-2016)2001 (FIPS 180-2)
Internationell statusingår i ISO/IEC 10118-3:2018FIPS 180-4

Samma skelett, olika muskler: båda algoritmerna delar upp meddelandet i 512-bitars block och kör 64 rundor av blandning över åtta 32-bitars register, men varje konstant, varje rotationsvärde och meddelandeutvidgningssteget skiljer sig, så de ger helt orelaterade sammandrag för samma indata. SM3("abc") är 66c7f0f4...8f4ba8e0 medan SHA-256("abc") är ba7816bf...f20015ad — prova båda med knappen Exempel.

Betyder "nationell standard" säkrare?

Nej — och det är inte dess uppgift. SM3 erbjuder säkerhet jämförbar med SHA-256: ett 256-bitars sammandrag, inga praktiska kollisions- eller preimage-attacker kända. Anledningen till att SM3 finns är sviteoberoende och regulatorisk efterlevnad: kinesiska regler för kommersiell kryptografi (商用密码, "SM") kräver den inhemska sviten i certifierade sektorer — bank, myndigheter, telekominfrastruktur — så att hela stacken (hash, signatur, chiffer) styrs av en nationell standardprocess snarare än utländska. Utanför det sammanhanget är SHA-256 och SM3 utbytbara i styrka; välj SM3 när motparten, regulatorn eller protokollet (till exempel TLS 1.3 med RFC 8998:s SM-chiffersviter) kräver det.

Var SM3 hör hemma i SM-sviten
  • SM3 (denna sida) — hashen. Även sammandraget inuti SM2-signaturer (ZA-värdet) och KDF för SM2-kryptering.
  • SM4 — blockchiffret med 128 bitar (tänk "AES gjort nationellt"), ECB/CBC på SM4-sidan i denna familj.
  • SM2 — den elliptisk-kurva-baserade signatur- och krypteringsalgoritmen över kurvan sm2p256v1, byggd på SM3.
  • SM9 — identitetsbaserad kryptografi: en e-postadress är den publika nyckeln.
Vanliga misstag
  • Att hasha lösenord med SM3. SM3 är en snabb hash för allmänt bruk, precis som SHA-256 — miljarder gissningar per sekund på en GPU. För lösenordslagring, använd bcrypt, scrypt, Argon2id eller PBKDF2 från Lösenordshashgeneratorn.
  • Att anta att den gamla C1C2C3-ordningen spelar roll här. Chiffertextordning är ett SM2-ämne; SM3 har inget sådant veck. Dess utdata är alltid 32 byte.
  • Att blanda ihop GM/T 0004-2012 och GB/T 32905-2016. Samma algoritm, samma testvektorer — GM/T är branschens standardpublikation, GB/T den nationella. ISO/IEC 10118-3:2018 innehåller den också.
  • Lita på men verifiera. Självtestet på denna sida spelar upp standardens egna bilagevektorer; om det inte säger "0 misslyckade", lita inte på utdatan.
Vanliga frågor

Finns SM3 i OpenSSL? Ja — OpenSSL 1.1.1 och senare: openssl dgst -sm3 file, HMAC via -hmac. GmSSL (den kinesiska förgreningen) har haft det längre. Den här sidan kräver inget av det: algoritmen körs i webbläsaren.

Vad är HMAC-SM3 till för? Meddelandeautentisering: ett sammandrag som dessutom bevisar vem som skickade det, eftersom endast innehavare av den delade nyckeln kan skapa det. Standardiserad i GB/T 15852.2 / ISO/IEC 9797-2. Nyckeln kan vara vilken längd som helst; över 64 byte hashas den först.

Varför visar filkanalen inte SHA-256-jämförelsen? Jämförelsen använder webbläsarens inbyggda WebCrypto-sammandrag i ett svep, som kräver att hela indata finns i minnet — bra för text, inte för en 200 MB-fil som strömmas i delar. SM3 självt beräknas inkrementellt och har ingen sådan gräns här.

Kan man få sammandraget som Base64? Ja — valet Utdataformat. Båda kanalerna i varje resultat kan kopieras eller laddas ned som en liten textrapport.