anychain_core/utilities/
crypto.rs1use ripemd::Ripemd160;
2use sha2::{Digest, Sha256, Sha512};
3use sha3::Keccak256;
4
5#[inline]
6pub fn sha256(input: &[u8]) -> [u8; 32] {
7 let mut hasher = Sha256::new();
8 hasher.update(input);
9 hasher.finalize().into()
10}
11
12#[inline]
13pub fn sha512(input: &[u8]) -> [u8; 64] {
14 let mut hasher = Sha512::new();
15 hasher.update(input);
16 hasher.finalize().into()
17}
18
19#[inline]
20pub fn keccak256(input: &[u8]) -> [u8; 32] {
21 let mut hasher = Keccak256::new();
22 hasher.update(input);
23 hasher.finalize().into()
24}
25
26pub fn checksum(data: &[u8]) -> Vec<u8> {
27 Sha256::digest(Sha256::digest(data)).to_vec()
28}
29
30pub fn hash160(bytes: &[u8]) -> Vec<u8> {
31 Ripemd160::digest(Sha256::digest(bytes)).to_vec()
32}