Bộ tạo hash SM3

Tính bản tóm tắt SM3 — GB/T 32905-2016, tiêu chuẩn băm mật mã quốc gia Trung Quốc — của văn bản hoặc tệp hoàn toàn trong trình duyệt của bạn. SM3 thuần hoặc HMAC-SM3 có khóa, đầu ra hex hoặc Base64, với làn SHA-256 song song để so sánh. Không gì được tải lên.
Thuật toánCắt
SM3–
SHA-256 (làn so sánh, chỉ nguồn văn bản)–
Chi tiết–
Đối chiếu dòng lệnh — bản tóm tắt trang này in ra cho một tệp khớp với openssl dgst -sm3 file.bin (OpenSSL 1.1.1+) và gmssl dgst -sm3 file.bin từng byte. Với HMAC-SM3: openssl dgst -sm3 -hmac <key> với khóa văn bản.
Tự kiểm tra
Chạy lại engine của trang với các vector phụ lục A chính thức của GB/T 32905-2016, các vector HMAC-SM3 của GB/T 15852.2 (ISO/IEC 9797-2), một lần chạy gia tăng 1000 byte theo khối, cả hai nhóm mẫu, làn Base64 đối chiếu với bộ mã hóa của chính trình duyệt, và các đường dẫn phủ định (khóa hex sai định dạng phải bị từ chối). Không gì được gửi đi đâu cả.
SM3 là gì?
Trong một câu: SM3 là hàm băm mật mã của cơ quan tiêu chuẩn quốc gia Trung Quốc — một hàm băm Merkle–Damgård 256-bit cùng họ cấu trúc với SHA-256, nhưng có giá trị khởi tạo, hằng số vòng, hàm Boolean và mở rộng thông điệp 68 từ riêng, được công bố là GM/T 0004-2012 và sau đó là GB/T 32905-2016.
SM3 so với SHA-256 nhìn nhanh
Khía cạnhSM3SHA-256
Kích thước bản tóm tắt / khối / từ256 / 512 / 32 bit256 / 512 / 32 bit
Vòng nén6464
Mở rộng thông điệpW[0..67] + W'[0..63] suy ra, hoán vị P1W[0..63] với các phép xoay σ0/σ1
Hằng số vònghai hằng số T0..15=0x79CC4519, T16..63=0x7A879D8A, xoay theo j64 hằng số K[0..63]
Hàm BooleanFF/GG đổi ở vòng 16Ch/Maj xuyên suốt
Thứ tự bytebig-endianbig-endian
Đã công bố2010 (GM/T 0004-2012; GB/T 32905-2016)2001 (FIPS 180-2)
Tình trạng quốc tếcó trong ISO/IEC 10118-3:2018FIPS 180-4

Cùng bộ khung, cơ bắp khác: cả hai thuật toán đều chia thông điệp thành khối 512-bit và chạy 64 vòng trộn trên tám thanh ghi 32-bit, nhưng mọi hằng số, mọi lượng xoay và bước mở rộng thông điệp đều khác nhau, nên chúng cho bản tóm tắt hoàn toàn không liên quan với cùng đầu vào. SM3("abc") là 66c7f0f4...8f4ba8e0 trong khi SHA-256("abc") là ba7816bf...f20015ad — thử cả hai bằng nút Mẫu.

"Tiêu chuẩn quốc gia" có nghĩa là an toàn hơn không?

Không — và đó không phải việc của nó. SM3 cung cấp độ an toàn tương đương SHA-256: bản tóm tắt 256-bit, không có tấn công va chạm hay tiền ảnh thực tế nào được biết. Lý do SM3 tồn tại là tính độc lập của bộ và tuân thủ pháp quy: quy định mật mã thương mại Trung Quốc (商用密码, "SM") yêu cầu bộ trong nước trong các lĩnh vực được chứng nhận — ngân hàng, chính phủ, hạ tầng viễn thông — để toàn bộ ngăn xếp (băm, chữ ký, mật mã) do một quy trình tiêu chuẩn quốc gia kiểm soát thay vì nước ngoài. Ngoài bối cảnh đó, SHA-256 và SM3 có độ mạnh thay thế được cho nhau; hãy chọn SM3 khi đối tác, cơ quan quản lý hoặc giao thức của bạn (ví dụ TLS 1.3 với các bộ mật mã SM theo RFC 8998) yêu cầu.

SM3 nằm ở đâu trong bộ SM
  • SM3 (trang này) — hàm băm. Cũng là bản tóm tắt bên trong chữ ký SM2 (giá trị ZA) và KDF của mã hóa SM2.
  • SM4 — mật mã khối 128-bit (hãy nghĩ là "AES theo kiểu quốc gia"), ECB/CBC trên trang SM4 của họ này.
  • SM2 — thuật toán chữ ký và mã hóa đường cong elliptic trên đường cong sm2p256v1, xây trên SM3.
  • SM9 — mật mã dựa trên định danh: địa chỉ email của bạn là khóa công khai của bạn.
Những lỗi thường gặp
  • Băm mật khẩu bằng SM3. SM3 là hàm băm đa dụng nhanh, như SHA-256 — hàng tỷ phỏng đoán mỗi giây trên GPU. Để lưu mật khẩu, dùng bcrypt, scrypt, Argon2id hoặc PBKDF2 từ Trình tạo băm mật khẩu.
  • Giả định thứ tự C1C2C3 cũ có quan trọng ở đây. Thứ tự bản mã là chủ đề của SM2; SM3 không có vướng mắc đó. Đầu ra của nó luôn là 32 byte.
  • Nhầm lẫn GM/T 0004-2012 và GB/T 32905-2016. Cùng thuật toán, cùng vector kiểm thử — GM/T là ấn phẩm tiêu chuẩn ngành, GB/T là ấn phẩm quốc gia. ISO/IEC 10118-3:2018 cũng mang nó.
  • Tin, nhưng hãy kiểm chứng. Phần tự kiểm tra trên trang này chạy lại các vector phụ lục của chính tiêu chuẩn; nếu nó không nói "0 thất bại", đừng tin đầu ra.
Câu hỏi thường gặp

SM3 có trong OpenSSL không? Có — OpenSSL 1.1.1 trở lên: openssl dgst -sm3 file, HMAC qua -hmac. GmSSL (nhánh Trung Quốc) có từ lâu hơn. Trang này không cần cái nào: thuật toán chạy trong trình duyệt của bạn.

HMAC-SM3 dùng để làm gì? Xác thực thông điệp: một bản tóm tắt cũng chứng minh ai đã gửi nó, vì chỉ người nắm khóa chung mới tạo được. Được chuẩn hóa trong GB/T 15852.2 / ISO/IEC 9797-2. Khóa có thể dài bất kỳ; nếu quá 64 byte, nó được băm trước.

Vì sao làn tệp không hiển thị so sánh SHA-256? Phép so sánh dùng bản tóm tắt một lần tích hợp sẵn của WebCrypto trình duyệt, cần toàn bộ đầu vào trong bộ nhớ — ổn cho văn bản, không ổn cho tệp 200 MB được truyền theo khối. Bản thân SM3 được tính gia tăng và không có giới hạn như vậy ở đây.

Có thể lấy bản tóm tắt dạng Base64 không? Có — bộ chọn Định dạng đầu ra. Cả hai làn của mọi kết quả đều có thể sao chép hoặc tải về dưới dạng một báo cáo văn bản nhỏ.