
Коллекция криптографических хеш-функций, написанных на чистом Rust
[![Project Chat][chat-image]][chat-link] [![dependency status][deps-image]][deps-link] ![Apache2/MIT licensed][license-image]
Коллекция [криптографических хеш-функций][1], написанных на чистом Rust.
Все алгоритмы находятся в отдельных крейтах и реализованы с использованием типажей из крейта [digest].
Примеры использования приведены в документации крейта digest и крейтов реализаций хеш-функций.
Кроме того, все крейты не требуют стандартной библиотеки (т.е. поддерживают no_std) и могут быть
легко использованы для программирования bare-metal или WebAssembly путём отключения стандартных возможностей крейтов.
Коллекцию [расширяемых выходных функций (XOF)][XOF] см. в репозитории [RustCrypto/XOFs].
Примечание: Для новых приложений, либо если совместимость с другими существующими стандартами не является первостепенной, мы настоятельно рекомендуем использовать [BLAKE3][blake3], SHA-2 или SHA-3.
| Алгоритм | Крейт | Crates.io | Документация | MSRV | Безопасность |
|---|---|---|---|---|---|
| [Ascon-Hash256] | [ascon‑hash256] | 1.85 | 💚 | ||
| [bash-hash][STB 34.101.77-2020] | [bash‑hash] | 1.85 | 💚 | ||
| [BelT] hash | [belt‑hash] | 1.85 | 💚 | ||
| [BLAKE2] | [blake2] | 1.85 | 💚 | ||
| [FSB] | [fsb] | 1.85 | 💚 | ||
| [GOST R 34.11-94][GOST94] | [gost94] | 1.85 | 💛 | ||
| [Grøstl] (Groestl) | [groestl] | 1.85 | 💚 | ||
| [JH] | [jh] | 1.85 | 💚 | ||
| [Kupyna] | [kupyna] | 1.85 | 💚 | ||
| [MD2] | [md2] | 1.85 | 💔 | ||
| [MD4] | [md4] | 1.85 | 💔 | ||
| [MD5] | [md5] ❗ | 1.85 | 💔 | ||
| [RIPEMD] | [ripemd] | 1.85 | 💚 | ||
| [SHA-1] | [sha1] | 1.85 | 💔 | ||
| [SHA-1 Checked] | [sha1-checked] | 1.85 | 💛 | ||
| [SHA-2] | [sha2] | 1.85 | 💚 | ||
| [SHA-3] (Keccak) | [sha3] | 1.85 | 💚 | ||
| [SHABAL] | [shabal] | 1.85 | 💚 | ||
| [Skein] | [skein] | 1.85 | 💚 | ||
| [SM3] (OSCCA GM/T 0004-2012) | [sm3] | 1.85 | 💚 | ||
| [Streebog] (GOST R 34.11-2012) | [streebog] | 1.85 | 💛 | ||
| [Tiger] | [tiger] | 1.85 | 💛 | ||
| [Whirlpool] | [whirlpool] | 1.85 | 💚 |
ПРИМЕЧАНИЕ: крейт [blake3] реализует типажи digest, используемые остальными хеш-функциями в этом репозитории, но поддерживается командой BLAKE3.
В следующей таблице описаны уровни стойкости, присвоенные каждой хеш-функции (т.е. алгоритмам, а не конкретным реализациям):
| Сердце | Описание |
|---|---|
| 💚 | Известных успешных атак нет |
| 💛 | Теоретический взлом: стойкость ниже заявленной |
| 💔 | Атака продемонстрирована на практике: избегайте, если это вообще возможно |
Дополнительную информацию см. на странице Security в Википедии.
По возможности крейты публикуются под тем же именем, что и папка крейта.
Владельцы md5 отказались участвовать в этом проекте.
Этот крейт не реализует типажи [digest], поэтому он несовместим с экосистемой RustCrypto.
Именно поэтому мы публикуем нашу реализацию MD5 как md-5 и помечаем её знаком ❗.
Обратите внимание, что сама библиотека называется md5, то есть в выражениях use нужно использовать md5, а не md_5.
Все крейты в этом репозитории лицензированы на условиях либо
на ваш выбор.