Gerador de hash SM3

Calcule resumos SM3 — GB/T 32905-2016, a norma nacional chinesa de hash criptográfico — de texto ou ficheiros inteiramente no seu navegador. SM3 simples ou HMAC-SM3 com chave, saída em hexadecimal ou Base64, com uma faixa SHA-256 lado a lado para comparação. Nada é enviado.
AlgoritmoResumo
SM3–
SHA-256 (faixa de comparação, apenas origem texto)–
Pormenores–
Verificação cruzada na linha de comandos — o resumo que esta página imprime para um ficheiro coincide byte a byte com openssl dgst -sm3 ficheiro.bin (OpenSSL 1.1.1+) e gmssl dgst -sm3 ficheiro.bin. Para HMAC-SM3: openssl dgst -sm3 -hmac <chave> com uma chave de texto.
Autoteste
Volta a executar o motor da página contra os vetores oficiais do anexo A da GB/T 32905-2016, os vetores HMAC-SM3 da GB/T 15852.2 (ISO/IEC 9797-2), uma execução incremental de 1000 bytes em blocos, ambos os conjuntos de amostras, a faixa Base64 contra o codificador do próprio navegador, e os caminhos negativos (uma chave hexadecimal malformada tem de ser rejeitada). Nada é enviado para lado nenhum.
O que é o SM3?
Em resumo: o SM3 é o hash criptográfico do organismo chinês de normas nacionais — um hash Merkle–Damgård de 256 bits da mesma família estrutural do SHA-256, mas com valores iniciais, constantes de ronda, funções booleanas e uma expansão de mensagem de 68 palavras próprias, publicado como GM/T 0004-2012 e depois GB/T 32905-2016.
SM3 vs SHA-256 num relance
AspetoSM3SHA-256
Tamanho do resumo / bloco / palavra256 / 512 / 32 bits256 / 512 / 32 bits
Rondas de compressão6464
Expansão da mensagemW[0..67] + W'[0..63] derivados, permutação P1W[0..63] com rotações de σ0/σ1
Constantes de rondaduas constantes T0..15=0x79CC4519, T16..63=0x7A879D8A, rodadas por j64 constantes K[0..63]
Funções booleanasFF/GG muda na ronda 16Ch/Maj em toda a parte
Ordem dos bytesbig-endianbig-endian
Publicado2010 (GM/T 0004-2012; GB/T 32905-2016)2001 (FIPS 180-2)
Estado internacionalincluído na ISO/IEC 10118-3:2018FIPS 180-4

Mesmo esqueleto, músculo diferente: ambos os algoritmos dividem a mensagem em blocos de 512 bits e executam 64 rondas de mistura sobre oito registos de 32 bits, mas cada constante, cada quantidade de rotação e o passo de expansão da mensagem diferem, pelo que produzem resumos completamente não relacionados para a mesma entrada. SM3("abc") é 66c7f0f4...8f4ba8e0 enquanto SHA-256("abc") é ba7816bf...f20015ad — experimente ambos com o botão Exemplo.

"Norma nacional" significa mais segurança?

Não — e isso não é o seu papel. O SM3 oferece segurança comparável à do SHA-256: um resumo de 256 bits, sem ataques práticos de colisão ou de pré-imagem conhecidos. A razão de existir do SM3 é a independência do conjunto e a conformidade regulamentar: as regras chinesas de criptografia comercial (商用密码, "SM") exigem o conjunto nacional em setores certificados — banca, governo, infraestruturas de telecomunicações — para que toda a pilha (hash, assinatura, cifra) seja controlada por um único processo de normalização nacional e não por processos estrangeiros. Fora desse contexto, SHA-256 e SM3 são intercambiáveis em força; escolha o SM3 quando a sua contraparte, o regulador ou o protocolo (por exemplo o TLS 1.3 com as suítes SM da RFC 8998) o pedir.

Onde o SM3 se situa dentro do conjunto SM
  • SM3 (esta página) — o hash. Também o resumo dentro das assinaturas SM2 (o valor ZA) e a KDF da cifragem SM2.
  • SM4 — a cifra de blocos de 128 bits (pense em "AES nacionalizado"), ECB/CBC na página SM4 desta família.
  • SM2 — o algoritmo de assinatura e cifragem de curva elíptica sobre a curva sm2p256v1, construído sobre o SM3.
  • SM9 — criptografia baseada na identidade: o seu endereço de email é a sua chave pública.
Erros comuns
  • Fazer hash de palavras-passe com SM3. O SM3 é um hash rápido de uso geral, como o SHA-256 — milhares de milhões de adivinhações por segundo numa GPU. Para guardar palavras-passe use bcrypt, scrypt, Argon2id ou PBKDF2 do Gerador de hash de palavras-passe.
  • Presumir que a ordem antiga C1C2C3 importa aqui. A ordem do texto cifrado é um tema do SM2; o SM3 não tem essa particularidade. A sua saída tem sempre 32 bytes.
  • Confundir GM/T 0004-2012 com GB/T 32905-2016. Mesmo algoritmo, mesmos vetores de teste — GM/T é a publicação da indústria, GB/T a nacional. A ISO/IEC 10118-3:2018 também o inclui.
  • Confie, mas verifique. O autoteste desta página repete os vetores do próprio anexo da norma; se não disser "0 falhas", não confie no resultado.
FAQ

O SM3 está disponível no OpenSSL? Sim — OpenSSL 1.1.1 e posteriores: openssl dgst -sm3 ficheiro, HMAC através de -hmac. O GmSSL (a bifurcação chinesa) tem-no há mais tempo. Esta página não precisa de nenhum: o algoritmo corre no seu navegador.

Para que serve o HMAC-SM3? Autenticação de mensagens: um resumo que também prova quem o enviou, porque só quem tem a chave partilhada o consegue produzir. Normalizado em GB/T 15852.2 / ISO/IEC 9797-2. A chave pode ter qualquer comprimento; acima de 64 bytes é primeiro submetida a hash.

Porque é que a faixa de ficheiro não mostra a comparação SHA-256? A comparação usa o resumo one-shot WebCrypto integrado do navegador, que precisa de toda a entrada em memória — adequado para texto, não para um ficheiro de 200 MB lido em blocos. O próprio SM3 é calculado de forma incremental e não tem esse limite aqui.

Posso obter o resumo em Base64? Sim — o seletor Formato de saída. As duas faixas de cada resultado podem ser copiadas ou transferidas como um pequeno relatório de texto.