rust aes加密小工具

用的是aes,非rust-crypto。

因为我在使用rust-crypto的时候,写出来的代码编译不成wasm。很奇怪,看到StackOverflow上的回答好像是这个库已经很久没人更新了。建议不要使用这个库。

请指正!

# 需要使用这几个
base64 = "0.13.0"
cbc = "0.1.2"
aes = "0.8"
use base64::{encode, decode};
use aes::cipher::{block_padding::Pkcs7, BlockDecryptMut, BlockEncryptMut, generic_array::GenericArray, KeyInit,};
use aes::{Aes128Enc, Aes128Dec};

const KEY: &[u8; 16] = b"1234567890123456"; // 密钥---16位

pub fn encrypt(plain: String) -> Vec<u8> {
    
    let plain_bytes = plain.as_bytes();

    let size = if plain.len() % 16 == 0 {
        plain.len() + 16
    } else {
        ((plain.len() / 16) + 1) * 16
    };
    let mut buf = vec![0u8; size];

    let pt_len = plain.len();
    buf[..pt_len].copy_from_slice(plain_bytes);

    let key = GenericArray::from(KEY.clone());
    let ct = Aes128Enc::new(&key)
        .encrypt_padded_b2b_mut::<Pkcs7>(plain_bytes, &mut buf)
        .unwrap();

    ct.to_vec()
}

/// 解密
pub fn decrypt(cipher_byte: Vec<u8>) -> Vec<u8> {
    
    let mut vec_buf = vec![0u8; cipher_byte.len()];
    vec_buf[..cipher_byte.len()].copy_from_slice(&cipher_byte);

    let key = GenericArray::from(KEY.clone());
    let pt = Aes128Dec::new(&key)
        .decrypt_padded_b2b_mut::<Pkcs7>(&cipher_byte, &mut vec_buf)
        .unwrap();

    pt.to_vec()
}

fn main(){
    println!("{}",encode(encrypt("qwertyuiop".to_string())));
    let ming = decrypt(decode("19k9CrYcvnH9rumP48WRBw==").unwrap());
    println!("{}",String::from_utf8(ming).unwrap());
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

布蕾烧仙草

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值