27个版本
0.11.0-pre.4 | 2024年7月26日 |
---|---|
0.11.0-pre.3 | 2024年2月1日 |
0.11.0-pre.2 | 2024年1月17日 |
0.10.8 | 2023年9月26日 |
0.1.2 |
|
在密码学类别中排名176
每月下载量8,311,978
在18,642个crate(直接使用3,390个)中使用
88KB
2K SLoC
RustCrypto: SHA-2
SHA-2加密哈希算法的纯Rust实现。
SHA-2标准中指定了6种标准算法:Sha224
、Sha256
、Sha512_224
、Sha512_256
、Sha384
和Sha512
。
从算法上来说,只有两个核心算法:SHA-256和SHA-512。所有其他算法都是基于这两个算法的应用,具有不同的初始哈希值,并截断为不同的摘要位长度。列表中的前两个算法基于SHA-256,而后四个基于SHA-512。
示例
一次性API
use sha2::{Sha256, Digest};
use hex_literal::hex;
let hash = Sha256::digest(b"hello world");
assert_eq!(hash, hex!("b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"));
// Hex-encode hash using https://docs.rs/base16ct
let hex_hash = base16ct::lower::encode_string(&hash);
assert_eq!(hex_hash, "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9");
增量API
use sha2::{Sha256, Sha512, Digest};
use hex_literal::hex;
let mut hasher = Sha256::new();
hasher.update(b"hello ");
hasher.update(b"world");
let hash256 = hasher.finalize();
assert_eq!(hash256, hex!("b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"));
let mut hasher = Sha512::new();
hasher.update(b"hello world");
let hash512 = hasher.finalize();
assert_eq!(hash512, hex!(
"309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee511a7c7a9bcd3ca86d4cd86f"
"989dd35bc5ff499670da34255b45b0cfd830e81f605dcf7dc5542e93ae9cd76f"
));
还可以参考RustCrypto/hashes的readme中的示例部分。
最低支持的Rust版本
Rust 1.72 或更高版本。
最低支持的Rust版本未来可能会更改,但将通过小版本号的增加来完成。
SemVer策略
- 此库的所有默认功能均受SemVer保护
- MSRV被认为不受SemVer的限制,如上所述
许可
该crate可以在以下任一许可下使用:
由您选择。
贡献
除非您明确声明,否则任何有意提交以包含在您的工作中的贡献,根据Apache-2.0许可定义,将按上述方式双许可,不附加任何额外的条款或条件。
依赖项
~310–530KB
~12K SLoC