Tina-1300/rusty_crypt
GitHub: Tina-1300/rusty_crypt
一个简洁的 Rust 密码学库,为 AES-256-GCM 认证加密提供易用的高层接口。
Stars: 0 | Forks: 0
# rusty_crypt
[](https://crates.io/crates/rusty_crypt)
[](https://docs.rs/rusty_crypt)
[](https://github.com/)
一个简单且安全的 Rust 库,为 **AES-256-GCM 认证加密** 提供易于使用的接口。
`rusty_crypt` 提供了高级实用工具,可轻松将现代对称加密集成到 Rust 应用程序中。
## 功能
- 🔐 AES-256-GCM 认证加密
- 🔑 安全的 AES-256 密钥生成
- 🎲 安全的 nonce 生成
- 📦 文本加密和解密
- 📁 二进制数据加密和解密
- ⚠️ 使用 `Result` 进行安全的错误处理
- 🚫 加密失败不会引发 panic
# 安装说明
将 `rusty_crypt` 添加到您的 `Cargo.toml` 中:
```
[dependencies]
rusty_crypt = "0.4.0"
```
# 概述
`rusty_crypt` 使用 **AES-256-GCM** 算法。
AES-GCM 提供:
- **机密性**
数据已加密,没有密钥无法读取。
- **完整性**
对加密数据的任何修改都会被检测到。
- **身份验证**
在解密期间会拒绝无效的密钥或损坏的密文。
AES-256 需要一个:
```
32 bytes key (256 bits)
```
AES-GCM 使用一个:
```
12 bytes nonce (96 bits)
```
每次加密操作都必须生成一个唯一的 nonce。
# 快速入门
## 加密和解密文本
```
use base64::{engine::general_purpose, Engine};
use rusty_crypt::{
AesGeneratedKey,
AesGcmEncrypt,
AesGcmDecrypt,
AesGcmGeneratedNonce,
};
fn main() -> Result<(), Box> {
let key = AesGeneratedKey.generate_key()?;
let key_base64 = general_purpose::STANDARD.encode(key);
let nonce_generator = AesGcmGeneratedNonce;
let encryptor = AesGcmEncrypt::new(
&nonce_generator
);
let decryptor = AesGcmDecrypt;
let message = "Hello rusty_crypt!";
let encrypted = encryptor.encrypt(
message,
&key_base64
)?;
println!(
"Encrypted: {}",
encrypted
);
let decrypted = decryptor.decrypt(
&encrypted,
&key_base64
)?;
println!(
"Decrypted: {}",
decrypted
);
Ok(())
}
```
# 加密二进制数据
`rusty_crypt` 可以加密任何二进制数据:
- 文件
- 图像
- 文档
- 网络 payload
- 序列化数据
示例:
```
use rusty_crypt::{
AesGeneratedKey,
AesGcmEncrypt,
AesGcmDecrypt,
AesGcmGeneratedNonce,
};
fn main() -> Result<(), Box> {
let key = AesGeneratedKey.generate_key()?;
let nonce_generator = AesGcmGeneratedNonce;
let encryptor = AesGcmEncrypt::new(
&nonce_generator
);
let decryptor = AesGcmDecrypt;
let data = b"Secret binary data";
let (ciphertext, nonce) =
encryptor.encrypt_bytes(
data,
&key
)?;
let mut encrypted_data = Vec::new();
encrypted_data.extend_from_slice(
&nonce
);
encrypted_data.extend_from_slice(
&ciphertext
);
let decrypted =
decryptor.decrypt_bytes(
&encrypted_data,
&key
)?;
assert_eq!(
data,
decrypted.as_slice()
);
Ok(())
}
```
# 密钥生成
生成安全的 AES-256 密钥:
```
use rusty_crypt::AesGeneratedKey;
fn main() -> Result<(), Box> {
let key = AesGeneratedKey.generate_key()?;
println!(
"Key size: {} bytes",
key.len()
);
Ok(())
}
```
输出:
```
Key size: 32 bytes
```
# Nonce 生成
生成安全的 AES-GCM nonce:
```
use rusty_crypt::AesGcmGeneratedNonce;
fn main() -> Result<(), Box> {
let nonce_generator = AesGcmGeneratedNonce;
let nonce =
nonce_generator.generate_nonce()?;
println!(
"Nonce size: {} bytes",
nonce.len()
);
Ok(())
}
```
输出:
```
Nonce size: 12 bytes
```
# 错误处理
所有加密操作均返回:
```
Result
```
当发生加密或解密错误时,该库不会引发 panic。
可用错误:
- 无效的 Base64
- 无效的 AES 密钥大小
- 无效的 nonce 大小
- 无效的密文格式
- 加密失败
- 解密失败
- 无效的 UTF-8 数据
- 随机数生成失败
示例:
```
use rusty_crypt::AesGcmDecrypt;
fn main() {
let decryptor = AesGcmDecrypt;
match decryptor.decrypt(
"invalid_data",
"invalid_key"
) {
Ok(value) => {
println!(
"Decrypted: {}",
value
);
}
Err(error) => {
println!(
"Crypto error: {}",
error
);
}
}
}
```
# 安全建议
对于安全的应用程序:
- 切勿对相同的密钥重复使用 AES-GCM nonce。
- 切勿暴露加密密钥。
- 安全地存储密钥。
- 不要在您的源代码中硬编码密钥。
- 在生产环境中使用安全的密钥管理系统。
`rusty_crypt` 提供底层的加密原语。
# 文档
完整的 API 文档:
https://docs.rs/rusty_crypt
# 许可证
MIT 许可证
标签:AES-GCM, Rust, SOC Prime, 加密库, 可视化界面, 密码学, 开发工具, 手动系统调用, 网络流量审计, 通知系统