
用纯 Rust 编写的[密码学哈希函数][1]集合。
所有算法均位于独立的 crate 中,并使用 [digest] crate 的 trait 实现。
digest 及各个哈希实现 crate 的文档中提供了使用示例。
此外,所有 crate 均不依赖标准库(即支持 no_std),通过禁用默认 crate 特性,
便可轻松用于裸机或 WebAssembly 编程。
如需[可扩展输出函数(XOF)][XOF]的集合,请参阅 [RustCrypto/XOFs] 仓库。
注意: 对于新应用程序,或者当与其他现有标准的兼容性不是主要考虑因素时,我们强烈建议使用 [BLAKE3][blake3]、SHA-2 或 SHA-3。
| 算法 | Crate | 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] crate 实现了本仓库中其他哈希所使用的 digest trait,但由 BLAKE3 团队维护。
以下描述了与每个哈希函数(即算法,而非具体实现)相关的安全级别评级:
| 符号 | 说明 |
|---|---|
| 💚 | 没有已知的成功攻击 |
| 💛 | 理论破解:安全性低于所声称的水平 |
| 💔 | 攻击已在实践中得到证明:尽可能避免使用 |
更多信息请参阅维基百科上的安全性页面。
只要可能,crate 都会以与 crate 文件夹相同的名称发布。
md5 的所有者拒绝参与本项目。
该 crate 未实现 [digest] trait,因此无法与 RustCrypto 生态系统互操作。
这就是为什么我们将 MD5 实现发布为 md-5,并用 ❗ 标记。
请注意,库本身命名为 md5,即在 use 语句中应使用 md5,而不是 md_5。
本仓库中的所有 crate 均采用以下任一许可证:
由您自行选择。
除非您明确声明,否则,根据 Apache-2.0 许可证中的定义,您为纳入本作品而有意提交的任何贡献,均应按上述方式采用双重许可,不附加任何额外条款或条件。