Генератор хешей SM3

Вычисляйте дайджесты SM3 — GB/T 32905-2016, китайский национальный стандарт криптографического хеширования — текста или файлов полностью в браузере. Обычный SM3 или ключевой HMAC-SM3, вывод в hex или 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 <ключ> с текстовым ключом.
Самопроверка
Заново запускает движок страницы на официальных векторах приложения A GB/T 32905-2016, векторах HMAC-SM3 GB/T 15852.2 (ISO/IEC 9797-2), инкрементальном прогоне 1000 байт частями, обоих наборах образцов, полосе Base64 против собственного кодировщика браузера и негативных путях (некорректный hex-ключ должен отвергаться). Ничего никуда не отправляется.
Что такое SM3?
Вкратце: SM3 — криптографический хеш китайского национального органа стандартизации — 256-битная хеш-функция Меркла–Дамгора по той же структурной семье, что и SHA-256, но со своими начальными значениями, раундовыми константами, булевыми функциями и расширением сообщения из 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], перестановка P1W[0..63] с поворотами σ0/σ1
Раундовые константыдве константы T0..15=0x79CC4519, T16..63=0x7A879D8A, повёрнутые на j64 константы K[0..63]
Булевы функциипереключение FF/GG на раунде 16Ch/Maj на всём протяжении
Порядок байтовbig-endianbig-endian
Опубликован2010 (GM/T 0004-2012; GB/T 32905-2016)2001 (FIPS 180-2)
Международный статусвключён в ISO/IEC 10118-3:2018FIPS 180-4

Один скелет, разные мышцы: оба алгоритма режут сообщение на блоки по 512 бит и выполняют 64 раунда перемешивания над восемью 32-битными регистрами, но каждая константа, каждое значение поворота и шаг расширения сообщения различаются, поэтому для одного входа они дают совершенно не связанные дайджесты. SM3("abc") — 66c7f0f4...8f4ba8e0, а SHA-256("abc") — ba7816bf...f20015ad — попробуйте оба кнопкой «Пример».

Значит ли «национальный стандарт» безопаснее?

Нет — и это не его задача. SM3 предлагает стойкость, сравнимую с SHA-256: 256-битный дайджест, никаких известных практических атак коллизий или прообраза. Причина существования SM3 — независимость набора и соответствие регуляторным требованиям: китайские правила коммерческой криптографии (商用密码, «SM») требуют отечественного набора в сертифицируемых секторах — банковском деле, госуправлении, телеком-инфраструктуре — чтобы весь стек (хеш, подпись, шифр) контролировался одним национальным процессом стандартизации, а не иностранным. Вне этого контекста SHA-256 и SM3 по стойкости взаимозаменяемы; выбирайте SM3, когда этого требуют ваш контрагент, регулятор или протокол (например, TLS 1.3 с наборами шифров SM по RFC 8998).

Место SM3 внутри набора SM
  • SM3 (эта страница) — хеш. Также дайджест внутри подписей SM2 (значение ZA) и KDF шифрования SM2.
  • SM4 — 128-битный блочный шифр (вроде «AES, сделанного национальным»), ECB/CBC на странице SM4 этого семейства.
  • SM2 — алгоритм эллиптической подписи и шифрования на кривой sm2p256v1, построенный на SM3.
  • SM9 — криптография на основе идентичности: ваш адрес электронной почты и есть ваш открытый ключ.
Распространённые ошибки
  • Хеширование паролей 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 не пройдено», не доверяйте выводу.
Частые вопросы

Есть ли 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 МБ, передаваемого частями. Сам SM3 вычисляется инкрементально и здесь такого ограничения не имеет.

Можно ли получить дайджест в Base64? Да — селектор «Формат вывода». Обе полосы каждого результата можно скопировать или скачать как небольшой текстовый отчёт.