Tina-1300/rusty_crypt

GitHub: Tina-1300/rusty_crypt

一个简洁的 Rust 密码学库,为 AES-256-GCM 认证加密提供易用的高层接口。

Stars: 0 | Forks: 0

# rusty_crypt [![Crates.io](https://img.shields.io/crates/v/rusty_crypt.svg?cacheSeconds=1)](https://crates.io/crates/rusty_crypt) [![文档](https://docs.rs/rusty_crypt/badge.svg)](https://docs.rs/rusty_crypt) [![许可证](https://img.shields.io/crates/l/rusty_crypt.svg)](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, 加密库, 可视化界面, 密码学, 开发工具, 手动系统调用, 网络流量审计, 通知系统