5 releases
Uses old Rust 2015
0.8.5 | Apr 27, 2020 |
---|---|
0.8.4 | Apr 11, 2020 |
0.8.3 | Mar 17, 2020 |
0.8.2 | Mar 17, 2020 |
0.8.1 | Feb 19, 2020 |
#2496 in Cryptography
56KB
1K
SLoC
Sha2Ni
Sha2 implemention in Rust, aimed at performance. Forked from Sha2.
License
Dual-licensed under Apache 2.0 and MIT terms:
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
lib.rs
:
An implementation of the SHA-2 cryptographic hash algorithms.
There are 6 standard algorithms specified in the SHA-2 standard:
Sha224
, which is the 32-bitSha256
algorithm with the result truncated to 224 bits.Sha256
, which is the 32-bitSha256
algorithm.Sha384
, which is the 64-bitSha512
algorithm with the result truncated to 384 bits.Sha512
, which is the 64-bitSha512
algorithm.Sha512Trunc224
, which is the 64-bitSha512
algorithm with the result truncated to 224 bits.Sha512Trunc256
, which is the 64-bitSha512
algorithm with the result truncated to 256 bits.
Algorithmically, there are only 2 core algorithms: Sha256
and Sha512
.
All other algorithms are just applications of these with different initial
hash values, and truncated to different digest bit lengths.
Usage
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
")[..]);
Also see RustCrypto/hashes readme.
Dependencies
~1.5MB
~29K SLoC