23 lines
783 B
Rust
23 lines
783 B
Rust
use crate::bytes::Bytes;
|
|
use openssl::symm;
|
|
|
|
pub fn encrypt(key: &Bytes, nonce: u64, data: &Bytes) -> Bytes {
|
|
decrypt(key, nonce, data)
|
|
}
|
|
|
|
pub fn decrypt(Bytes(key): &Bytes, nonce: u64, Bytes(data): &Bytes) -> Bytes {
|
|
let mut counter: u64 = 0;
|
|
let cipher_type = symm::Cipher::aes_128_ecb();
|
|
let block_size = cipher_type.block_size();
|
|
let mut result: Vec<u8> = vec![];
|
|
for cipher in data.chunks(block_size) {
|
|
let mut keyinput = nonce.to_le_bytes().to_vec();
|
|
keyinput.append(&mut counter.to_le_bytes().to_vec());
|
|
let keystream = crate::cbc::enrypt_aes_128_ecb_block(key, &keyinput);
|
|
let mut data = crate::utils::xor(&keystream, &cipher.to_vec());
|
|
result.append(&mut data);
|
|
counter += 1;
|
|
}
|
|
Bytes(result)
|
|
}
|