mycommon_utils/utils/
rand_utils.rs1use md5;
2use rand::Rng;
3pub fn rand_s(length: usize) -> String {
5 const CHARSET: &[u8] = b"ABCDEFGHIJKLMNOPQRSTUVWXYZ\
6 abcdefghijklmnopqrstuvwxyz\
7 0123456789)(*&^%$#@!~";
8 let mut rng = rand::rng();
9
10 let rand_string: String = (0..length)
11 .map(|_| {
12 let idx = rng.random_range(0..CHARSET.len());
13 CHARSET[idx] as char
14 })
15 .collect();
16
17 rand_string
18}
19
20fn bytes_to_hex(bytes: &[u8]) -> String {
22 use std::fmt::Write;
23 let mut result = String::new();
24 for byte in bytes {
25 write!(result, "{:02x}", byte).expect("Writing to String should not fail");
26 }
27 result
28}
29
30pub fn encrypt_password_salt(password: &str, salt: &str) -> String {
32 if salt.len() == 0 {
33 return encrypt_password(password);
34 }
35 let combined = format!("{}$X7h{}", password, salt);
36 let digest = md5::compute(combined);
37 bytes_to_hex(&digest[..])
38}
39
40pub fn encrypt_password(password: &str) -> String {
42 let digest = md5::compute(password);
43 bytes_to_hex(&digest[..])
44}