darkwing/server/utils/
php_like.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
use crate::server::error::AppResult;
use base64::{prelude::BASE64_STANDARD, Engine};
use sha2::Digest;

pub fn sha256(input: &str) -> String {
  let mut hasher = sha2::Sha256::new();
  hasher.update(input.as_bytes());
  hex::encode(hasher.finalize())
}

pub fn aes128_encrypt(
  key: &[u8; 16],
  data: &str,
  iv: &[u8; 16],
) -> AppResult<String> {
  let data = data.as_bytes();

  let cipher = libaes::Cipher::new_128(key);

  let encrypted = cipher.cbc_encrypt(iv, data);

  let base64_encoded = BASE64_STANDARD.encode(encrypted);

  Ok(sha256(&base64_encoded))
}