SM3 ハッシュ生成

SM3 ダイジェスト — GB/T 32905-2016、中国国家暗号ハッシュ規格 — を テキストやファイルから完全にブラウザー内で計算します。通常の SM3 またはキー付き HMAC-SM3、16 進または Base64 出力、比較用の SHA-256 並列レーンつき。 何もアップロードされません。
アルゴリズムダイジェスト
SM3–
SHA-256 (比較レーン、テキストソースのみ)–
詳細–
コマンドライン相互確認 — このページがファイルに対して表示するダイジェストは openssl dgst -sm3 file.bin(OpenSSL 1.1.1+)や gmssl dgst -sm3 file.bin とバイト単位で一致します。 HMAC-SM3 は:openssl dgst -sm3 -hmac <key>(テキスト鍵)。
セルフテスト
公式 GB/T 32905-2016 附属書 A のベクトル、GB/T 15852.2(ISO/IEC 9797-2)の HMAC-SM3 ベクトル、チャンク分割された 1000 バイトの増分実行、両方のサンプルプール、 ブラウザー自身のエンコーダーに対する Base64 レーン、ネガティブパス(不正な 16 進鍵の拒否)に 対してページのエンジンを再実行します。何もどこにも送信されません。
SM3 とは何か?
一文で言うと:SM3 は中国国家標準機関の暗号ハッシュです — SHA-256 と同じ構造ファミリの 256 ビット Merkle–Damgård ハッシュですが、 独自の初期値、ラウンド定数、ブール関数、68 ワードのメッセージ拡張を持ち、 GM/T 0004-2012、後に GB/T 32905-2016 として制定されました。
SM3 と SHA-256 の一目比較
観点SM3SHA-256
ダイジェスト / ブロック / ワードサイズ256 / 512 / 32 ビット256 / 512 / 32 ビット
圧縮ラウンド数6464
メッセージ拡張W[0..67] + 派生 W'[0..63]、P1 置換W[0..63] に σ0/σ1 回転
ラウンド定数2 つの定数 T0..15=0x79CC4519、T16..63=0x7A879D8A、j で回転64 定数 K[0..63]
ブール関数ラウンド 16 で FF/GG 切替終始 Ch/Maj
バイト順ビッグエンディアンビッグエンディアン
制定2010 年(GM/T 0004-2012。GB/T 32905-2016)2001 年(FIPS 180-2)
国際的な地位ISO/IEC 10118-3:2018 に収録FIPS 180-4

同じ骨格、違う筋肉:どちらのアルゴリズムもメッセージを 512 ビットブロックに切り、8 つの 32 ビットレジスタに 64 ラウンドの混合を実行しますが、すべての定数、回転量、メッセージ拡張ステップが異なるため、同じ入力に対して完全に無関係なダイジェストを生みます。SM3("abc") は 66c7f0f4...8f4ba8e0、SHA-256("abc") は ba7816bf...f20015ad — サンプルボタンで両方試してください。

「国家規格」はより安全という意味か?

いいえ — それは SM3 の仕事ではありません。SM3 は SHA-256 と同等のセキュリティを提供します:256 ビットダイジェストで、実用的な衝突・原像攻撃は知られていません。SM3 が存在する理由はスイートの独立性と規制コンプライアンスです:中国の商用暗号規制(商用密码、「SM」)は、認定分野 — 銀行、政府、通信インフラ — で国産スイートを要求し、スタック全体(ハッシュ、署名、暗号)が外国ではなく一国の標準プロセスに制御されるようにします。その文脈の外では、SHA-256 と SM3 は強度において交換可能です。相手、規制当局、プロトコル(例:RFC 8998 SM 暗号スイートの TLS 1.3)が求めるときに SM3 を選んでください。

SM スイート内での SM3 の位置
  • SM3(このページ)— ハッシュ。SM2 署名の内部ダイジェスト(ZA 値)と SM2 暗号化の KDF でもあります。
  • SM4 — 128 ビットブロック暗号(「国家版 AES」のようなもの)。この族の SM4 ページで ECB/CBC。
  • SM2 — sm2p256v1 曲線上の楕円曲線署名・暗号化アルゴリズム。SM3 の上に構築。
  • SM9 — ID ベース暗号:メールアドレスがそのまま公開鍵。
よくある間違い
  • SM3 でパスワードをハッシュする。 SM3 は SHA-256 と同じく高速な汎用ハッシュです — GPU で毎秒数十億回の推量。パスワード保存にはパスワードハッシュ生成の bcrypt、scrypt、Argon2id、PBKDF2 を使ってください。
  • 古い C1C2C3 順序がここで関係すると仮定する。 暗号文の順序は SM2 の話題です。SM3 にはそのしわがなく、出力は常に 32 バイトです。
  • GM/T 0004-2012 と GB/T 32905-2016 を混同する。 同じアルゴリズム、同じテストベクトル — GM/T は業界標準版、GB/T は国家版です。ISO/IEC 10118-3:2018 にも収録されています。
  • 信頼し、ただし検証する。 このページのセルフテストは規格自身の附属書ベクトルを再生します。「0 failed」と表示されないなら、出力を信頼しないでください。
よくある質問

SM3 は OpenSSL で使えますか? はい — OpenSSL 1.1.1 以降:openssl dgst -sm3 file、HMAC は -hmac。GmSSL(中国のフォーク)には以前からあります。このページはどちらも不要です:アルゴリズムはブラウザー内で動きます。

HMAC-SM3 は何のため? メッセージ認証です:共有鍵の保持者だけが生成できるため、誰が送ったかも証明するダイジェスト。GB/T 15852.2 / ISO/IEC 9797-2 で標準化。鍵は任意長で、64 バイト超は先にハッシュされます。

ファイルのレーンに SHA-256 比較が出ないのはなぜ? 比較にはブラウザー内蔵の WebCrypto ワンショットダイジェストを使い、それは入力全体をメモリに必要とします — テキストには問題なく、200 MB のチャンクストリームには無理です。SM3 自体は増分計算され、ここではそのような制限を受けません。

ダイジェストを Base64 で取得できますか? はい — 出力形式セレクターで。すべての結果の両レーンは、小さなテキストレポートとしてコピーまたはダウンロードできます。