1use hex_fmt::HexFmt;
3use rand::{distr::Alphanumeric, rng, Rng};
4use sha2::{Digest, Sha256};
5use uuid::Uuid;
6
7pub fn uuid() -> String {
9 let uuid = Uuid::new_v4();
10 uuid.to_string()
11}
12
13pub fn hash(input: String) -> String {
14 let mut hasher = <Sha256 as Digest>::new();
15 hasher.update(input.into_bytes());
16
17 let res = hasher.finalize();
18 HexFmt(res).to_string()
19}
20
21pub fn hash_salted(input: String, salt: String) -> String {
22 let mut hasher = <Sha256 as Digest>::new();
23 hasher.update(format!("{salt}{input}").into_bytes());
24
25 let res = hasher.finalize();
26 HexFmt(res).to_string()
27}
28
29pub fn salt() -> String {
30 rng()
31 .sample_iter(&Alphanumeric)
32 .take(16)
33 .map(char::from)
34 .collect()
35}
36
37pub fn random_id() -> String {
38 hash(uuid())
39}