Skip to main content

teaql_tool_std/
hash.rs

1use sha2::{Sha256, Sha512, Digest};
2use blake3;
3use crc32fast::Hasher as Crc32Hasher;
4
5pub struct HashTool;
6
7impl HashTool {
8    pub fn new() -> Self {
9        Self
10    }
11
12    pub fn sha256(&self, data: &[u8]) -> String {
13        let mut hasher = Sha256::new();
14        hasher.update(data);
15        hex::encode(hasher.finalize())
16    }
17
18    pub fn sha512(&self, data: &[u8]) -> String {
19        let mut hasher = Sha512::new();
20        hasher.update(data);
21        hex::encode(hasher.finalize())
22    }
23
24    pub fn blake3(&self, data: &[u8]) -> String {
25        let hash = blake3::hash(data);
26        hash.to_hex().to_string()
27    }
28
29    pub fn crc32(&self, data: &[u8]) -> u32 {
30        let mut hasher = Crc32Hasher::new();
31        hasher.update(data);
32        hasher.finalize()
33    }
34}
35
36impl Default for HashTool {
37    fn default() -> Self {
38        Self::new()
39    }
40}