Pembuat Hash SM3

Hitung digest SM3 — GB/T 32905-2016, standar hash kriptografi nasional Tiongkok — dari teks atau berkas sepenuhnya di browser Anda. SM3 biasa atau HMAC-SM3 berkunci, keluaran hex atau Base64, dengan jalur SHA-256 berdampingan untuk perbandingan. Tidak ada yang diunggah.
AlgoritmaDigesti
SM3–
SHA-256 (jalur perbandingan, hanya sumber teks)–
Rincian–
Pemeriksaan silang baris perintah — digest yang dicetak halaman ini untuk sebuah berkas cocok dengan openssl dgst -sm3 file.bin (OpenSSL 1.1.1+) dan gmssl dgst -sm3 file.bin byte demi byte. Untuk HMAC-SM3: openssl dgst -sm3 -hmac <key> dengan kunci teks.
Uji mandiri
Menjalankan ulang mesin halaman terhadap vektor lampiran A resmi GB/T 32905-2016, vektor HMAC-SM3 GB/T 15852.2 (ISO/IEC 9797-2), eksekusi inkremental 1000 byte per potongan, kedua kumpulan contoh, jalur Base64 terhadap encoder bawaan browser, dan jalur negatif (kunci hex yang rusak harus ditolak). Tidak ada yang dikirim ke mana pun.
Apa itu SM3?
Dalam satu kalimat: SM3 adalah hash kriptografi dari badan standar nasional Tiongkok — hash Merkle–Damgård 256-bit dalam keluarga struktural yang sama dengan SHA-256, tetapi dengan nilai awalnya sendiri, konstanta ronde, fungsi Boolean, dan ekspansi pesan 68-kata, diterbitkan sebagai GM/T 0004-2012 dan kemudian GB/T 32905-2016.
SM3 vs SHA-256 sekilas
AspekSM3SHA-256
Ukuran digest / blok / word256 / 512 / 32 bit256 / 512 / 32 bit
Ronde kompresi6464
Ekspansi pesanW[0..67] + W'[0..63] turunan, permutasi P1W[0..63] dengan rotasi σ0/σ1
Konstanta rondedua konstanta T0..15=0x79CC4519, T16..63=0x7A879D8A, dirotasi sebesar j64 konstanta K[0..63]
Fungsi BooleanPergantian FF/GG pada ronde 16Ch/Maj di seluruh
Urutan bytebig-endianbig-endian
Dipublikasikan2010 (GM/T 0004-2012; GB/T 32905-2016)2001 (FIPS 180-2)
Status internasionaltermasuk dalam ISO/IEC 10118-3:2018FIPS 180-4

Kerangka yang sama, otot yang berbeda: kedua algoritma memotong pesan menjadi blok 512-bit dan menjalankan 64 ronde pengacakan atas delapan register 32-bit, tetapi setiap konstanta, jumlah rotasi, dan langkah ekspansi pesan berbeda, sehingga menghasilkan digest yang sama sekali tidak berhubungan untuk input yang sama. SM3("abc") adalah 66c7f0f4...8f4ba8e0 sedangkan SHA-256("abc") adalah ba7816bf...f20015ad — coba keduanya dengan tombol Contoh.

Apakah "standar nasional" berarti lebih aman?

Tidak — dan itu bukan tugasnya. SM3 menawarkan keamanan yang sebanding dengan SHA-256: digest 256-bit, tidak ada serangan tabrakan atau prapengimejan praktis yang diketahui. Alasan SM3 ada adalah independensi rangkaian dan kepatuhan regulasi: regulasi kriptografi komersial Tiongkok (商用密码, "SM") mewajibkan rangkaian domestik di sektor bersertifikat — perbankan, pemerintahan, infrastruktur telekomunikasi — sehingga seluruh tumpukan (hash, tanda tangan, cipher) dikendalikan oleh satu proses standar nasional, bukan standar asing. Di luar konteks itu, SHA-256 dan SM3 setara dalam kekuatan; pilih SM3 ketika pihak lawan, regulator, atau protokol Anda (misalnya TLS 1.3 dengan suite cipher SM RFC 8998) memintanya.

Di mana SM3 berada dalam rangkaian SM
  • SM3 (halaman ini) — hash-nya. Juga digest di dalam tanda tangan SM2 (nilai ZA) dan KDF enkripsi SM2.
  • SM4 — cipher blok 128-bit (bayangkan "AES versi nasional"), ECB/CBC di halaman SM4 dari keluarga ini.
  • SM2 — algoritma tanda tangan dan enkripsi kurva elips atas kurva sm2p256v1, dibangun di atas SM3.
  • SM9 — kriptografi berbasis identitas: alamat surel Anda adalah kunci publik Anda.
Kesalahan umum
  • Meng-hash kata sandi dengan SM3. SM3 adalah hash serba guna yang cepat, seperti SHA-256 — miliaran tebakan per detik pada GPU. Untuk penyimpanan kata sandi gunakan bcrypt, scrypt, Argon2id, atau PBKDF2 dari Pembuat Hash Kata Sandi.
  • Mengasumsikan urutan C1C2C3 lama penting di sini. Urutan ciphertext adalah topik SM2; SM3 tidak memiliki kerumitan semacam itu. Keluarannya selalu 32 byte.
  • Mencampuradukkan GM/T 0004-2012 dan GB/T 32905-2016. Algoritma yang sama, vektor uji yang sama — GM/T adalah publikasi standar industri, GB/T yang nasional. ISO/IEC 10118-3:2018 juga memuatnya.
  • Percayai, tetapi verifikasi. Self-test di halaman ini memutar ulang vektor lampiran standar itu sendiri; jika tidak menyatakan "0 gagal", jangan percayai keluarannya.
FAQ

Apakah SM3 tersedia di OpenSSL? Ya — OpenSSL 1.1.1 dan yang lebih baru: openssl dgst -sm3 file, HMAC melalui -hmac. GmSSL (cabang Tiongkok) sudah memilikinya lebih lama. Halaman ini tidak memerlukan keduanya: algoritmanya berjalan di browser.

Untuk apa HMAC-SM3? Autentikasi pesan: digest yang juga membuktikan siapa yang mengirimnya, karena hanya pemegang kunci bersama yang dapat membuatnya. Distandarkan dalam GB/T 15852.2 / ISO/IEC 9797-2. Kunci boleh berapa pun panjangnya; jika lebih dari 64 byte, kunci terlebih dahulu di-hash.

Mengapa jalur berkas tidak menampilkan perbandingan SHA-256? Perbandingan menggunakan digest sekali-jalan WebCrypto bawaan browser, yang memerlukan seluruh masukan di memori — cukup untuk teks, tidak untuk berkas 200 MB yang dialirkan per potongan. SM3 sendiri dihitung secara bertahap dan tidak memiliki batas seperti itu di sini.

Bisakah digest diperoleh sebagai Base64? Bisa — pemilih Format keluaran. Kedua jalur setiap hasil dapat disalin atau diunduh sebagai laporan teks kecil.