Генератор хеша cSHAKE128
Вычисляйте cSHAKE128 с именем функции N, строкой настройки S и любой длиной вывода. Проверено по примерам NIST SP 800-185, работает в вашем браузере.
Кратна 8, от 8 до 16384 бит.
Обычно остаётся пустым. Зарезервировано NIST для функций, построенных на cSHAKE.
Необязательная метка для разделения доменов, например название приложения. Разные строки дают никак не связанные результаты.
Работает полностью в вашем браузере. Ваши данные никуда не загружаются.
Что такое Генератор хеша cSHAKE128?
cSHAKE128 — настраиваемая версия SHAKE128, определённая в NIST SP 800-185. Она добавляет имя функции N и строку настройки S, чтобы одно и то же сообщение, хешируемое для разных целей, давало несвязанные результаты. Инструмент позволяет задать N, S и длину вывода.
Как пользоваться Генератор хеша cSHAKE128
- Введите или вставьте данные в Текст для хеширования — дайджест обновляется по мере ввода (пустое поле показывает хеш пустого ввода).
- Выберите Кодировка ввода: Текст (UTF-8) хеширует символы как UTF-8, Байты в hex или Base64 хешируют декодированные сырые байты.
- Задайте Длина вывода (бит) (по умолчанию 256).
- При необходимости заполните Имя функции (N) (обычно пусто) и Строка настройки (S), например название вашего приложения или протокола.
- Выберите Формат вывода (hex строчными, hex прописными или Base64) и нажмите Копировать.
Пример
Data 00010203 (Hex bytes), N empty, S = "Email Signature", 256 bits
c1c36925b6409a04f1b504fcbca9d82b4017277cb5ed2b2065fc1d3814d5aaf5
Пример cSHAKE #1 из NIST SP 800-185.
Когда использовать Генератор хеша cSHAKE128
Используйте cSHAKE128, когда нужно разделение доменов: несколько хешей от одних и тех же данных для разных целей (метки для выработки ключей, протокольные транскрипты, хеши с тегами). Если настройка не нужна, берите обычный SHAKE128, а если задействован секретный ключ — KMAC128. N зарезервировано за функциями, определёнными NIST; приложения обычно должны использовать только S.
Как работает Генератор хеша cSHAKE128
cSHAKE128 (NIST SP 800-185) — это SHAKE128 с разделением доменов. Перед сообщением он поглощает bytepad(encode_string(N) || encode_string(S), 168) — имя функции N и строку настройки S, каждая с префиксом из своей длины в битах, — а затем дополняет данные суффиксом 00 вместо 1111 у SHAKE. Если N и S пусты, cSHAKE128 по определению равен SHAKE128. Разные значения N или S дают независимые функции. N и S вводятся как текст и кодируются в UTF-8.
Распространенные Случаи Использования
- Воспроизвести тестовые векторы cSHAKE из NIST SP 800-185
- Получить разные значения для разных контекстов из одного ввода
- Реализовать или отладить KMAC, TupleHash или ParallelHash, построенные на cSHAKE
- Хешировать сообщения протокола с меткой, специфичной для приложения
Примечание по Безопасности
cSHAKE128 обеспечивает 128-битную стойкость, как и SHAKE128. Строка настройки публична и не является ключом — для аутентификации используйте KMAC128. Вычисления выполняются локально в браузере.
Часто Задаваемые Вопросы
Что будет, если N и S оба пусты?
По определению cSHAKE128 тогда равен SHAKE128; для abc при 256 битах вы получите 5881092dd818bf5c…, как у SHAKE128.
В чём разница между N и S?
N (имя функции) зарезервировано за функциями, определёнными NIST, такими как "KMAC" или "TupleHash". S — свободная строка настройки для приложений. На практике задают S, а N оставляют пустым.
Как кодируются N и S?
Как байты UTF-8 с префиксом из длины в битах (left_encode), затем дополняются до размера rate, как указано в SP 800-185.