mirror of
https://github.com/jixunmoe/tc_tea_rust
synced 2026-03-08 04:29:49 +00:00
fix: fix wrapper method
This commit is contained in:
19
src/lib.rs
19
src/lib.rs
@@ -2,6 +2,7 @@
|
|||||||
//!
|
//!
|
||||||
//! Notably, it uses a different round number and uses a "tweaked" CBC mode.
|
//! Notably, it uses a different round number and uses a "tweaked" CBC mode.
|
||||||
|
|
||||||
|
use crate::cbc::get_encrypted_size;
|
||||||
use byteorder::{ByteOrder, BE};
|
use byteorder::{ByteOrder, BE};
|
||||||
use thiserror::Error;
|
use thiserror::Error;
|
||||||
|
|
||||||
@@ -56,9 +57,10 @@ pub fn parse_key(key: &[u8]) -> Result<[u32; 4], TcTeaError> {
|
|||||||
pub fn encrypt<T: AsRef<[u8]>>(plaintext: T, key: &[u8]) -> Result<Vec<u8>, TcTeaError> {
|
pub fn encrypt<T: AsRef<[u8]>>(plaintext: T, key: &[u8]) -> Result<Vec<u8>, TcTeaError> {
|
||||||
let key = parse_key(key)?;
|
let key = parse_key(key)?;
|
||||||
let plaintext = plaintext.as_ref();
|
let plaintext = plaintext.as_ref();
|
||||||
let mut cipher = vec![0u8; plaintext.len()];
|
let cipher_len = get_encrypted_size(plaintext.len());
|
||||||
let result = cbc::decrypt(&mut cipher, plaintext, &key)?;
|
let mut cipher = vec![0u8; cipher_len];
|
||||||
Ok(Vec::from(result))
|
cbc::encrypt(&mut cipher, plaintext, &key)?;
|
||||||
|
Ok(cipher)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Decrypts a byte array containing the following:
|
/// Decrypts a byte array containing the following:
|
||||||
@@ -77,3 +79,14 @@ pub fn decrypt<T: AsRef<[u8]>>(encrypted: T, key: &[u8]) -> Result<Vec<u8>, TcTe
|
|||||||
let result = cbc::decrypt(&mut plain, encrypted, &key)?;
|
let result = cbc::decrypt(&mut plain, encrypted, &key)?;
|
||||||
Ok(Vec::from(result))
|
Ok(Vec::from(result))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_sanity_test() -> Result<(), TcTeaError> {
|
||||||
|
let key = b"43218765dcbahgfe";
|
||||||
|
let message = b"this is a test message.";
|
||||||
|
let cipher = encrypt(message, key)?;
|
||||||
|
let plain = decrypt(cipher, key)?;
|
||||||
|
assert_eq!(message, plain.as_slice());
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user