#sha-2 #digest #hash #hashing #hash-values #crypto

no-std sha2ni

SHA-2哈希函数

5个版本

使用旧的Rust 2015

0.8.5 2020年4月27日
0.8.4 2020年4月11日
0.8.3 2020年3月17日
0.8.2 2020年3月17日
0.8.1 2020年2月19日

#2496 in 加密学

MIT/Apache

56KB
1K SLoC

Sha2Ni

Build and test License Cargo Documentation

在Rust中实现的SHA-2哈希算法,旨在提高性能。从Sha2分支而来。

许可证

Apache 2.0和MIT条款下双许可


lib.rs:

SHA-2加密哈希算法的实现。

SHA-2标准中指定了6种标准算法

  • Sha224,它是32位的Sha256算法,结果截断到224位。
  • Sha256,它是32位的Sha256算法。
  • Sha384,它是64位的Sha512算法,结果截断到384位。
  • Sha512,它是64位的Sha512算法。
  • Sha512Trunc224,它是64位的Sha512算法,结果截断到224位。
  • Sha512Trunc256,它是64位的Sha512算法,结果截断到256位。

从算法角度来看,只有2个核心算法:Sha256Sha512。所有其他算法都是这些算法的不同初始哈希值的应用,并且截断到不同的摘要位长度。

用法

use sha2ni::{Sha256, Sha512, Digest};

// create a Sha256 object
let mut hasher = Sha256::new();

// write input message
hasher.input(b"hello world");

// read hash digest and consume hasher
let result = hasher.result();

assert_eq!(result[..], hex!("
    b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
")[..]);

// same for Sha512
let mut hasher = Sha512::new();
hasher.input(b"hello world");
let result = hasher.result();

assert_eq!(result[..], hex!("
    309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee511a7c7a9bcd3ca86d4cd86f
    989dd35bc5ff499670da34255b45b0cfd830e81f605dcf7dc5542e93ae9cd76f
")[..]);

另请参阅RustCrypto/hashes的readme。

依赖项

~1.5MB
~29K SLoC