2个版本
0.1.2 | 2024年2月10日 |
---|---|
0.1.1 | 2024年1月30日 |
#1678 in 密码学
68KB
1K SLoC
CryptGuard:Kyber编程库
简介
CryptGuard:Kyber是一个全面的密码学库,提供强大的加密和解密能力。它将传统密码学与后量子算法集成,确保对量子计算威胁的抵抗力。CryptGuard:Kyber面向开发者,赋予应用程序应对未来数字安全挑战的能力。拥抱CryptGuard:Kyber,成为保护数字领域隐私的可靠盟友。
先决条件
确保您的系统安装了最新稳定的Rust、Cargo和Tokio运行时环境。
数据加密
使用encrypt
、encrypt_msg
或encrypt_file
函数从Encrypt
结构中加密数据。
加密消息
use crypt_guard::{
File,
Encrypt,
Decrypt,
Keychain,
FileRemover,
Signing,
Sign,
ActionType,
};
#[tokio::main]
async fn main() {
let encrypt = Encrypt::new();
let keychain = Keychain::new().unwrap();
let message = "This is a secret message!";
let hmac_key = b"encryption_test_key";
let encrypted_message = encrypt.encrypt_msg(message, keychain.shared_secret.as_ref().unwrap(), hmac_key)
.await
.expect("Failed to encrypt message");
}
加密文件
#[tokio::main]
async fn main() {
let encrypt = Encrypt::new();
let keychain = Keychain::new().unwrap();
let file_path = PathBuf::from("path/to/your/file.txt");
let hmac_key = b"encryption_test_key";
let _ = encrypt.encrypt_file(file_path, keychain.shared_secret.as_ref().unwrap(), hmac_key)
.await
.expect("Failed to encrypt file");
}
数据解密
使用decrypt
、decrypt_msg
或decrypt_file
函数从Decrypt
结构中解密数据。
#[tokio::main]
async fn main() {
let decrypt = Decrypt::new();
let keychain = Keychain::new().unwrap();
let encrypted_data = ...; // Load your encrypted data here
let hmac_key = b"encryption_test_key";
let decrypted_message = decrypt.decrypt_msg(encrypted_data, keychain.shared_secret.as_ref().unwrap(), hmac_key)
.await
.expect("Failed to decrypt message");
let file_path = PathBuf::from("path/to/your/encrypted_file.txt");
let _ = decrypt.decrypt_file(file_path, keychain.shared_secret.as_ref().unwrap(), hmac_key)
.await
.expect("Failed to decrypt file");
}
密钥链使用
CryptGuard:Kyber中的Keychain
结构简化了密钥管理。它支持加载和保存公钥、私钥、共享密钥和密文。
fn main() {
let keychain = Keychain::new().unwrap();
// Load or generate keys as required
}
新功能:xchacha20
CryptGuard:Kyber中的xchacha20
功能引入了XChaCha20加密算法,为您的加密需求提供了额外的安全层。此功能为可选功能,可以在您的Cargo.toml
中启用。
使用XChaCha20加密数据
#[cfg(feature = "xchacha20")]
#[tokio::main]
async fn main() {
#[cfg(feature = "xchacha20")]
{
let encrypt = Encrypt::new();
let keychain = Keychain::new().unwrap();
let message = "This is a secret message!";
let nonce = generate_nonce();
let hmac_key = b"encryption_test_key";
let encrypted_message = encrypt.encrypt_msg_xchacha20(message, keychain.shared_secret.as_ref().unwrap(), &nonce, hmac_key)
.await
.expect("Failed to encrypt message with XChaCha20");
}
}
使用XChaCha20解密数据
#[cfg(feature = "xchacha20")]
;
#[tokio::main]
async fn main() {
#[cfg(feature = "xchacha20")]
{
let decrypt = Decrypt::new();
let keychain = Keychain::new().unwrap();
let nonce = ...; // Load your nonce here
let hmac_key = b"encryption_test_key";
let encrypted_data = ...; // Load your encrypted data here
let decrypted_message = decrypt.decrypt_msg_xchacha20(encrypted_data, keychain.shared_secret.as_ref().unwrap(), &nonce, hmac_key, false)
.await
.expect("Failed to decrypt message with XChaCha20");
}
}
依赖项
CryptGuard依赖于几个外部crate,在Cargo.toml
中指定
aes
: 0.8.3tokio
: 1.35.1 (带有full
功能)colored
: 2.1.0env
: 0.0.0hex
: 0.4.3hmac
: 0.12.1indicatif
: 0.17.7pqcrypto-falcon
: 0.3.0pqcrypto-kyber
: 0.8.0pqcrypto-traits
: 0.3.5rand
: 0.8.5sha2
: 0.10.8tempfile
: 3.9.0chacha20
:0.9.1(可选,启用xchacha20
功能)cipher
:0.4.4(可选,启用xchacha20
功能)
许可协议
CryptGuard 适用于 MIT 许可协议。完整的许可文本可在存储库中的 LICENSE
文件中找到。
You now have the complete README.md content with the updated examples for CryptGuard.
依赖项
~45–63MB
~1M SLoC