Skip to main content

encryption/hash/
sha256.rs

1// Copyright (c) 2026 erik <erik@erik.xyz> — https://erik.xyz
2
3//! SHA-256 哈希;输出 32 字节。
4
5use sha2::Sha256;
6
7use crate::hash::{NamedDigest, hasher};
8
9hasher!(Sha256Hasher, "sha256", "SHA-256 哈希器(无状态,可复用)。");
10
11impl NamedDigest for Sha256Hasher {
12    type Core = Sha256;
13}
14
15#[cfg(test)]
16mod tests {
17    use super::*;
18    use crate::contract::Hasher;
19
20    #[test]
21    fn matches_known_vector() {
22        let hasher = Sha256Hasher::new();
23        assert_eq!(
24            hasher.digest_hex(b"abc").unwrap(),
25            "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad"
26        );
27        assert_eq!(hasher.digest(b"abc").unwrap().len(), 32);
28    }
29}