32次发布
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年5月5日 |
0.3.0 | 2016年11月17日 |
#43 in 加密学
1,749,381 每月下载量
用于 4,877 个crate(809个直接使用)
1MB
728 行
RustCrypto: SHA-3
SHA-3加密哈希算法的纯Rust实现。
SHA-3标准中定义了6个标准算法
SHA3-224
SHA3-256
SHA3-384
SHA3-512
SHAKE128
,一个可扩展输出函数(XOF)SHAKE256
,一个可扩展输出函数(XOF)Keccak224
、Keccak256
、Keccak384
、Keccak512
(NIST提交,未更改填充)
此crate还支持TurboSHAKE
XOF变体。
示例
SHA3-256的输出大小是固定的,因此通常通过Digest
trait来访问其功能。
use hex_literal::hex;
use sha3::{Digest, Sha3_256};
let mut hasher = Sha3_256::new();
hasher.update(b"abc");
let hash = hasher.finalize();
assert_eq!(hash, hex!("3a985da74fe225b2045c172d6bd390bd855f086e3e9d525b46bfe24511431532"));
// Hex-encode hash using https://docs.rs/base16ct
let hex_hash = base16ct::lower::encode_string(&hash);
assert_eq!(hex_hash, "3a985da74fe225b2045c172d6bd390bd855f086e3e9d525b46bfe24511431532");
SHAKE函数具有可扩展的输出,因此最终化方法返回XOF读取器,可以从其中读取任意长度的结果。注意,这些函数没有实现Digest
,因此必须导入底层特质。
use sha3::{Shake128, digest::{Update, ExtendableOutput, XofReader}};
use hex_literal::hex;
let mut hasher = Shake128::default();
hasher.update(b"abc");
let mut reader = hasher.finalize_xof();
let mut buf = [0u8; 10];
reader.read(&mut buf);
assert_eq!(buf, hex!("5881092dd818bf5cf8a3"));
还可以参考RustCrypto/hashes的readme中的示例部分。
最低支持的Rust版本
Rust 1.71 或更高。
最低支持的Rust版本可能会在未来更改,但将以较小的版本号升级的方式进行。
SemVer策略
- 此库的所有默认功能都受SemVer的保护
- 如上所述,MSRV被视为免于SemVer
许可协议
此crate的许可协议为以下之一
任选其一。
贡献
除非你明确声明,否则你提交的任何有意包含在本作品中的贡献,根据Apache-2.0许可定义,应按照上述方式双许可,不附加任何额外条款或条件。