pub fn generate_passwd_string(clear_password: &String, key: &String) -> String {
use block_modes::block_padding::Pkcs7;
use block_modes::{BlockMode, Cbc};
type Aes128Cbc = Cbc<aes::Aes128, Pkcs7>;
// Create an AES object.
let cipher = Aes128Cbc::new_var(key.as_bytes(), &[0u8; 16]).unwrap();
// Concat plaintext: 64 bytes random bytes and original password.
let mut content = Vec::new();
content.extend_from_slice(&[0u8; 64]);
content.extend_from_slice(clear_password.as_bytes());
// Encrypt with AES and use do base64 encoding.
let encrypted_passwd = cipher.encrypt_vec(&content);
base64::encode(encrypted_passwd)
}
评论区
写评论有问题可以问,直接要代码略过分。
https://github.com/shadowsocks/crypto2/blob/dev/src/blockmode/cbc.rs#L133-L184
有一个库叫 aes,可以试一下
最新版本是 0.7,改动较大,我用过 aes 0.6. 这是以前写的一段代码
资料确实难找,当时折腾了好一会儿. 现在这个库的版本都不敢升
这种直接打屁屁。