1 个不稳定版本
0.1.0 | 2020年4月30日 |
---|
#2324 in 加密学
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