| Crates.io | defendor |
| lib.rs | defendor |
| version | 0.0.5 |
| created_at | 2025-06-21 07:43:35.479803+00 |
| updated_at | 2025-09-05 01:15:56.364411+00 |
| description | A secure file encryption tool with AES-GCM and Argon2 for password hashing. |
| homepage | |
| repository | https://github.com/nashaofu/defendor.git |
| max_upload_size | |
| id | 1720600 |
| size | 61,746 |
Defendor 是一个基于 Rust 的安全密钥封装与加密库,支持异步操作,适用于本地密钥管理、加密存储等场景。
[dependencies]
defendor = "*"
tokio = { version = "1", features = ["full"] }
zeroize = "1"
base64ct = "1"
use base64ct::{Base64, Encoding};
use defendor::Defendor;
use tokio::fs;
use zeroize::Zeroizing;
#[tokio::main]
async fn main() {
fs::create_dir_all("target").await.unwrap();
let mut defendor = Defendor::new(
"target/vault",
Zeroizing::new(String::from("password123").into()),
)
.await
.expect("Failed to initialize Defendor");
// 加密数据(自动生成 nonce 并封装格式)
let encrypted = defendor
.encrypt(b"Hello, world!")
.expect("Failed to encrypt data");
println!("Encrypted data: {}", Base64::encode_string(&encrypted));
// 密钥轮换
defendor
.rotate_key("password456".as_bytes().to_vec())
.await
.expect("Failed to rotate key");
println!("Key rotated successfully");
// 解密
let decrypted = defendor
.decrypt(&encrypted)
.expect("Failed to decrypt data after key rotation");
println!(
"Decrypted data after key rotation: {}",
String::from_utf8(decrypted).expect("Failed to convert to string")
);
// 重新加载
let defendor = Defendor::new(
"target/vault",
Zeroizing::new(String::from("password456").into()),
)
.await
.expect("Failed to initialize Defendor");
let decrypted = defendor
.decrypt(&encrypted)
.expect("Failed to decrypt data after key rotation");
println!(
"Decrypted data after re new Defendor: {}",
String::from_utf8(decrypted).expect("Failed to convert to string")
);
fs::remove_file("target/vault")
.await
.expect("Failed to remove vault file");
}
Defendor::new(path, password):初始化或加载密钥库Defendor::init(path, password):初始化密钥库Defendor::load(path, password):加载密钥库Defendor::encrypt(data):加密数据,自动生成 nonce 并封装格式,推荐使用Defendor::decrypt(data):解密数据,自动解析格式,推荐使用Defendor::change_password(new_password):更换解锁密码Defendor::rotate_key(new_password):轮换密钥Defendor::random(size):生成安全随机字节encrypt/decrypt,避免 nonce 重用风险Apache-2.0