1 个不稳定版本

0.1.0 2020年4月30日

#2324 in 加密学

MIT 许可证

21KB
268

openssl_enc

openssl enc功能实现。

此库可以像openssl enc命令行工具一样进行加密和解密。允许您使用此库进行加密,然后在另一端使用openssl进行解密。反之亦然。

此库支持一次加密/解密整个数据,或者一次解密一块。

示例

分块加密数据

    use std::fs::File;
    use std::io::prelude::*;
    use openssl::symm::Cipher;
    use openssl_enc::OpensslEnc;

    let mut file_chunk_buf = vec![0u8; 1024];
    let mut file = File::open("test.txt").unwrap();
    let mut out_file = File::create("out.enc").unwrap();
    let mut openssl_encrypt = OpensslEnc::new("password".to_string(), Cipher::aes_256_cbc(), 10000).unwrap();

    loop {
      let bytes_read = file.read(&mut file_chunk_buf).unwrap();
      file_chunk_buf.truncate(bytes_read);
      if bytes_read == 0 {
        break;
      }
      let encrypted_data = openssl_encrypt.encrypt_chunk(&mut file_chunk_buf).unwrap();
      out_file.write(&encrypted_data).unwrap();
    }
    let final_data = openssl_encrypt.encrypter_finalize().unwrap();
    out_file.write(&final_data).unwrap();
    out_file.flush().unwrap();

然后在外部使用openssl进行解密时可以运行。

 openssl enc -p -d -aes-256-cbc -md SHA256 -pbkdf2 -iter 10000 -in out.enc -out out.txt

请参阅cargo文档以获取详细说明。

依赖项

~9.5MB
~273K SLoC