Skip to main content

mega_security_rs/
utils.rs

1use crate::PBKDF2_ITER_NUM;
2
3use pbkdf2::pbkdf2_hmac;
4use sha2::{Digest, Sha256, Sha512};
5
6pub fn _compute_derived_key(salt_hash: &[u8], password: &str) -> Vec<u8> {
7    let mut derived_key = [0u8; 32];
8    pbkdf2_hmac::<Sha512>(password.as_bytes(), &salt_hash, PBKDF2_ITER_NUM, &mut derived_key);
9    derived_key.to_vec()
10}
11
12pub fn _salt(id: &str, random_value: &[u8]) -> Vec<u8> {
13    let mut hasher = Sha256::new();
14    let mut padding = vec!['P' as u8; 200 - id.len()];
15
16    let mut salt: Vec<u8> = Vec::new();
17    salt.append(&mut id.as_bytes().to_vec());
18    salt.append(&mut padding);
19    salt.append(&mut random_value.to_vec());
20            
21    hasher.update(&salt);
22
23    hasher.finalize().to_vec()
24}