Skip to main content

mycommon_utils/utils/
rand_utils.rs

1use md5;
2use rand::Rng;
3///  生成指定长度的字符串
4pub 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
20// 将字节数组转换为十六进制字符串
21fn 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
30/// 密码加密加盐
31pub 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
40/// 密码加密不带盐
41pub fn encrypt_password(password: &str) -> String {
42    let digest = md5::compute(password);
43    bytes_to_hex(&digest[..])
44}