No description
  • Rust 98.9%
  • RenderScript 1.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Artyom Pavlov 12105d369b
Some checks failed
ascon-hash256.yml / Use `sponge-cursor` to remove unnecessary buffering (#849) (push) Failing after 0s
ascon-xof128.yml / Use `sponge-cursor` to remove unnecessary buffering (#849) (push) Failing after 0s
bash-hash.yml / Use `sponge-cursor` to remove unnecessary buffering (#849) (push) Failing after 0s
belt-hash.yml / Use `sponge-cursor` to remove unnecessary buffering (#849) (push) Failing after 0s
blake2.yml / Use `sponge-cursor` to remove unnecessary buffering (#849) (push) Failing after 0s
cshake.yml / Use `sponge-cursor` to remove unnecessary buffering (#849) (push) Failing after 0s
fsb.yml / Use `sponge-cursor` to remove unnecessary buffering (#849) (push) Failing after 0s
gost94.yml / Use `sponge-cursor` to remove unnecessary buffering (#849) (push) Failing after 0s
groestl.yml / Use `sponge-cursor` to remove unnecessary buffering (#849) (push) Failing after 0s
jh.yml / Use `sponge-cursor` to remove unnecessary buffering (#849) (push) Failing after 0s
k12.yml / Use `sponge-cursor` to remove unnecessary buffering (#849) (push) Failing after 0s
kupyna.yml / Use `sponge-cursor` to remove unnecessary buffering (#849) (push) Failing after 0s
md2.yml / Use `sponge-cursor` to remove unnecessary buffering (#849) (push) Failing after 0s
md4.yml / Use `sponge-cursor` to remove unnecessary buffering (#849) (push) Failing after 0s
md5.yml / Use `sponge-cursor` to remove unnecessary buffering (#849) (push) Failing after 0s
ripemd.yml / Use `sponge-cursor` to remove unnecessary buffering (#849) (push) Failing after 0s
sha1-checked.yml / Use `sponge-cursor` to remove unnecessary buffering (#849) (push) Failing after 0s
sha1.yml / Use `sponge-cursor` to remove unnecessary buffering (#849) (push) Failing after 0s
sha2.yml / Use `sponge-cursor` to remove unnecessary buffering (#849) (push) Failing after 0s
sha3.yml / Use `sponge-cursor` to remove unnecessary buffering (#849) (push) Failing after 0s
shabal.yml / Use `sponge-cursor` to remove unnecessary buffering (#849) (push) Failing after 0s
skein.yml / Use `sponge-cursor` to remove unnecessary buffering (#849) (push) Failing after 0s
sm3.yml / Use `sponge-cursor` to remove unnecessary buffering (#849) (push) Failing after 0s
streebog.yml / Use `sponge-cursor` to remove unnecessary buffering (#849) (push) Failing after 0s
tiger.yml / Use `sponge-cursor` to remove unnecessary buffering (#849) (push) Failing after 0s
turboshake.yml / Use `sponge-cursor` to remove unnecessary buffering (#849) (push) Failing after 0s
whirlpool.yml / Use `sponge-cursor` to remove unnecessary buffering (#849) (push) Failing after 0s
Security Audit / Security Audit (push) Has been cancelled
Workspace / clippy (push) Has been cancelled
Workspace / rustfmt (push) Has been cancelled
Workspace / typos (push) Has been cancelled
Use sponge-cursor to remove unnecessary buffering (#849)
Removes unnecessary buffering from sponge-based constructions using the
`sponge-cursor` crate (see https://github.com/RustCrypto/utils/pull/1477).
2026-05-08 22:36:00 +03:00
.github Rename turbo-shake to turboshake (#843) 2026-04-24 20:01:02 +03:00
ascon-hash256 Release ascon-hash256 v0.1.0 and ascon-xof128 v0.1.0 (#842) 2026-04-24 18:08:45 +03:00
ascon-xof128 Use sponge-cursor to remove unnecessary buffering (#849) 2026-05-08 22:36:00 +03:00
bash-hash Fix release year in changelogs (#822) 2026-04-13 15:25:13 +03:00
belt-hash Release belt-hash v0.2.1 (#824) 2026-04-13 16:14:40 +03:00
blake2 Release blake2 v0.11.0-rc.6 (#833) 2026-04-16 02:23:57 +03:00
cshake Use sponge-cursor to remove unnecessary buffering (#849) 2026-05-08 22:36:00 +03:00
fsb Fix release year in changelogs (#822) 2026-04-13 15:25:13 +03:00
gost94 Fix release year in changelogs (#822) 2026-04-13 15:25:13 +03:00
groestl Fix release year in changelogs (#822) 2026-04-13 15:25:13 +03:00
jh Fix release year in changelogs (#822) 2026-04-13 15:25:13 +03:00
k12 Use sponge-cursor to remove unnecessary buffering (#849) 2026-05-08 22:36:00 +03:00
kupyna Fix release year in changelogs (#822) 2026-04-13 15:25:13 +03:00
md2 Fix release year in changelogs (#822) 2026-04-13 15:25:13 +03:00
md4 Fix release year in changelogs (#822) 2026-04-13 15:25:13 +03:00
md5 Fix release year in changelogs (#822) 2026-04-13 15:25:13 +03:00
ripemd Fix release year in changelogs (#822) 2026-04-13 15:25:13 +03:00
sha1 Release sha1 v0.11.0 (#810) 2026-03-27 17:06:53 +03:00
sha1-checked Use the standard order of the [package] section fields (#807) 2026-03-25 17:45:56 +03:00
sha2 sha2: remove macros from sha256/x86_sha (#853) 2026-05-07 20:24:16 +03:00
sha3 Use sponge-cursor to remove unnecessary buffering (#849) 2026-05-08 22:36:00 +03:00
shabal Fix release year in changelogs (#822) 2026-04-13 15:25:13 +03:00
skein Release skein v0.2.0 (#819) 2026-04-10 17:52:16 +03:00
sm3 Fix release year in changelogs (#822) 2026-04-13 15:25:13 +03:00
streebog Fix release year in changelogs (#822) 2026-04-13 15:25:13 +03:00
tiger Fix release year in changelogs (#822) 2026-04-13 15:25:13 +03:00
turboshake Use sponge-cursor to remove unnecessary buffering (#849) 2026-05-08 22:36:00 +03:00
whirlpool Fix release year in changelogs (#822) 2026-04-13 15:25:13 +03:00
.gitignore Add belt-hash (#416) 2022-09-23 17:08:44 +00:00
.typos.toml Bump digest dependency to v0.11.0-rc.11 (#781) 2026-02-02 10:09:57 -07:00
Cargo.lock Use sponge-cursor to remove unnecessary buffering (#849) 2026-05-08 22:36:00 +03:00
Cargo.toml Rename turbo-shake to turboshake (#843) 2026-04-24 20:01:02 +03:00
README.md Rename turbo-shake to turboshake (#843) 2026-04-24 20:01:02 +03:00
SECURITY.md Add SECURITY.md 2023-04-23 19:57:58 -06:00

RustCrypto: Hashes

Project Chat dependency status Apache2/MIT licensed

Collection of cryptographic hash functions written in pure Rust.

All algorithms reside in separate crates and are implemented using traits from digest crate. Usage examples are provided in digest and hash implementation crate docs. Additionally all crates do not require the standard library (i.e. no_std capable) and can be easily used for bare-metal or WebAssembly programming by disabling default crate features.

Supported Algorithms

Note: For new applications, or where compatibility with other existing standards is not a primary concern, we strongly recommend to use either BLAKE3, SHA-2 or SHA-3.

Algorithm Crate Crates.io Documentation MSRV Security
Ascon-Hash256 asconhash256 crates.io Documentation 1.85 💚
Ascon-XOF128 asconxof128 crates.io Documentation 1.85 💚
Bash hash bashhash crates.io Documentation 1.85 💚
BelT hash belthash crates.io Documentation 1.85 💚
BLAKE2 blake2 crates.io Documentation 1.85 💚
cSHAKE cshake crates.io Documentation 1.85 💚
FSB fsb crates.io Documentation 1.85 💚
GOST R 34.11-94 gost94 crates.io Documentation 1.85 💛
Grøstl (Groestl) groestl crates.io Documentation 1.85 💚
JH jh crates.io Documentation 1.85 💚
KangarooTwelve k12 crates.io Documentation 1.85 💚
Kupyna kupyna crates.io Documentation 1.85 💚
MD2 md2 crates.io Documentation 1.85 💔
MD4 md4 crates.io Documentation 1.85 💔
MD5 md5 crates.io Documentation 1.85 💔
RIPEMD ripemd crates.io Documentation 1.85 💚
SHA-1 sha1 crates.io Documentation 1.85 💔
SHA-1 Checked sha1-checked crates.io Documentation 1.85 💛
SHA-2 sha2 crates.io Documentation 1.85 💚
SHA-3 (Keccak) sha3 crates.io Documentation 1.85 💚
SHABAL shabal crates.io Documentation 1.85 💚
Skein skein crates.io Documentation 1.85 💚
SM3 (OSCCA GM/T 0004-2012) sm3 crates.io Documentation 1.85 💚
Streebog (GOST R 34.11-2012) streebog crates.io Documentation 1.85 💛
Tiger tiger crates.io Documentation 1.85 💚
TurboSHAKE turboshake crates.io Documentation 1.85 💚
Whirlpool whirlpool crates.io Documentation 1.85 💚

NOTE: the blake3 crate implements the digest traits used by the rest of the hashes in this repository, but is maintained by the BLAKE3 team.

Security Level Legend

The following describes the security level ratings associated with each hash function (i.e. algorithms, not the specific implementation):

Heart Description
💚 No known successful attacks
💛 Theoretical break: security lower than claimed
💔 Attack demonstrated in practice: avoid if at all possible

See the Security page on Wikipedia for more information.

Crate Names

Whenever possible crates are published under the same name as the crate folder. Owners of md5 declined to participate in this project. This crate does not implement the digest traits, so it is not interoperable with the RustCrypto ecosystem. This is why we publish our MD5 implementation as md-5 and mark it with the mark. Note that the library itself is named as md5, i.e. inside use statements you should use md5, not md_5.

License

All crates in this repository are licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.