SM3-hashgenerator

SM3-digests berekenen — GB/T 32905-2016, de Chinese nationale standaard voor cryptografische hashes — van tekst of bestanden, volledig in uw browser. Gewone SM3 of gesleutelde HMAC-SM3, uitvoer in hex of Base64, met een naast elkaar staande SHA-256-lijn ter vergelijking. Er wordt niets geüpload.
AlgoritmeDigest
SM3–
SHA-256 (vergelijkingslijn, alleen tekstbron)–
Details–
Controle vanaf de opdrachtregel — de digest die deze pagina voor een bestand afdrukt, komt byte voor byte overeen met openssl dgst -sm3 file.bin (OpenSSL 1.1.1+) en gmssl dgst -sm3 file.bin. Voor HMAC-SM3: openssl dgst -sm3 -hmac <key> met een tekstsleutel.
Zelftest
Draait de pagina-engine opnieuw tegen de officiële bijlage A-vectoren van GB/T 32905-2016, de HMAC-SM3-vectoren van GB/T 15852.2 (ISO/IEC 9797-2), een incrementele run in stukken van 1000 bytes, beide voorbeeldpools, de Base64-lijn tegen de eigen encoder van de browser, en negatieve paden (een misvormde hex-sleutel moet worden afgewezen). Er wordt niets ergens naartoe gestuurd.
Wat is SM3?
In één zin: SM3 is de cryptografische hash van het Chinese nationale standaardisatie-orgaan — een hash van 256 bits van het Merkle–Damgård-type uit dezelfde structurele familie als SHA-256, maar met eigen beginwaarden, rondeconstanten, booleaanse functies en een berichtuitbreiding van 68 woorden, gepubliceerd als GM/T 0004-2012 en later als GB/T 32905-2016.
SM3 versus SHA-256 in één oogopslag
KenmerkSM3SHA-256
digest-/blok-/woordgrootte256 / 512 / 32 bits256 / 512 / 32 bits
compressieronden6464
berichtuitbreidingW[0..67] + afgeleide W'[0..63], P1-permutatieW[0..63] met σ0/σ1-rotaties
rondeconstantentwee constanten T0..15=0x79CC4519, T16..63=0x7A879D8A, geroteerd met j64 constanten K[0..63]
booleaanse functiesFF/GG-wissel bij ronde 16Ch/Maj overal
bytevolgordebig-endianbig-endian
Gepubliceerd2010 (GM/T 0004-2012; GB/T 32905-2016)2001 (FIPS 180-2)
internationale statusopgenomen in ISO/IEC 10118-3:2018FIPS 180-4

Zelfde skelet, andere spieren: beide algoritmen hakken het bericht in blokken van 512 bits en draaien 64 ronden van mengen over acht registers van 32 bits, maar elke constante, elke rotatiewaarde en de berichtuitbreidingsstap verschillen, dus ze geven voor dezelfde invoer volledig ongerelateerde digests. SM3("abc") is 66c7f0f4...8f4ba8e0, terwijl SHA-256("abc") ba7816bf...f20015ad is — probeer beide met de knop Voorbeeld.

Betekent "nationale standaard" veiliger?

Nee — en dat is niet zijn taak. SM3 biedt beveiliging die vergelijkbaar is met SHA-256: een digest van 256 bits, en er zijn geen praktische botsings- of preimage-aanvallen bekend. De reden dat SM3 bestaat, is onafhankelijkheid van de suite en naleving van regelgeving: Chinese regelgeving voor commerciële cryptografie (商用密码, "SM") verlangt de binnenlandse suite in gecertificeerde sectoren — bank-, overheids- en telecominfrastructuur — zodat de hele stack (hash, handtekening, cijfer) door één nationaal standaardisatieproces wordt beheerst in plaats van door buitenlandse. Buiten die context zijn SHA-256 en SM3 in sterkte uitwisselbaar; kies SM3 wanneer uw tegenpartij, toezichthouder of protocol (bijvoorbeeld TLS 1.3 met de SM-cijfersuites van RFC 8998) erom vraagt.

Waar SM3 past in de SM-suite
  • SM3 (deze pagina) — de hash. Ook de digest in SM2-handtekeningen (de waarde ZA) en de KDF van SM2-codering.
  • SM4 — de blokcijfer van 128 bits (denk aan "AES, nationaal gemaakt"), ECB/CBC op de SM4-pagina van deze familie.
  • SM2 — het algoritme voor handtekeningen en codering met elliptische krommen over de kromme sm2p256v1, gebouwd op SM3.
  • SM9 — identiteitsgebaseerde cryptografie: uw e-mailadres is uw publieke sleutel.
Veelgemaakte fouten
  • Wachtwoorden hashen met SM3. SM3 is een snelle hash voor algemeen gebruik, zoals SHA-256 — miljarden gissingen per seconde op een GPU. Gebruik voor wachtwoordopslag bcrypt, scrypt, Argon2id of PBKDF2 uit de wachtwoordhashgenerator.
  • Ervan uitgaan dat de oude C1C2C3-volgorde hier telt. Cijfertekstvolgorde is een SM2-onderwerp; SM3 kent die omweg niet. De uitvoer is altijd 32 bytes.
  • GM/T 0004-2012 en GB/T 32905-2016 door elkaar halen. Hetzelfde algoritme, dezelfde testvectoren — GM/T is de publicatie van de industrie, GB/T de nationale. ISO/IEC 10118-3:2018 neemt het ook op.
  • Vertrouw, maar verifieer. De zelftest op deze pagina speelt de eigen bijlagevectoren van de standaard af; als er niet "0 mislukt" staat, vertrouw dan de uitvoer niet.
Veelgestelde vragen

Is SM3 beschikbaar in OpenSSL? Ja — OpenSSL 1.1.1 en later: openssl dgst -sm3 file, HMAC via -hmac. GmSSL (de Chinese fork) heeft het langer. Deze pagina heeft geen van beide nodig: het algoritme draait in uw browser.

Waarvoor dient HMAC-SM3? Berichtauthenticatie: een digest die ook bewijst wie hem heeft verstuurd, omdat alleen houders van de gedeelde sleutel hem kunnen maken. Gestandaardiseerd in GB/T 15852.2 / ISO/IEC 9797-2. De sleutel mag elke lengte hebben; boven 64 bytes wordt hij eerst gehasht.

Waarom toont de bestandslijn geen SHA-256-vergelijking? De vergelijking gebruikt de ingebouwde WebCrypto-eenmalige digest van de browser, die de hele invoer in het geheugen nodig heeft — prima voor tekst, niet voor een bestand van 200 MB dat in stukken wordt gestreamd. SM3 zelf wordt incrementeel berekend en kent hier geen dergelijke limiet.

Kan ik de digest als Base64 krijgen? Ja — via de keuzelijst Uitvoerformaat. Beide lijnen van elk resultaat kunnen als klein tekstrapport worden gekopieerd of gedownload.