#加密解密 #后量子密码学 #量子计算 #全面 #能力 #kyber #高级

crypt_guard_kyber

CryptGuardLib是一个全面的Rust库,专为强大的加密和解密而设计,融合了后量子密码学以抵御量子威胁。它面向需要将高级加密功能嵌入Rust应用程序的开发者。

2个版本

0.1.2 2024年2月10日
0.1.1 2024年1月30日

#1678 in 密码学

MIT许可

68KB
1K SLoC

CryptGuard:Kyber编程库

Crates.io MIT licensed Documentation GitHub Library GitHub CLI

简介

CryptGuard:Kyber是一个全面的密码学库,提供强大的加密和解密能力。它将传统密码学与后量子算法集成,确保对量子计算威胁的抵抗力。CryptGuard:Kyber面向开发者,赋予应用程序应对未来数字安全挑战的能力。拥抱CryptGuard:Kyber,成为保护数字领域隐私的可靠盟友。

先决条件

确保您的系统安装了最新稳定的Rust、Cargo和Tokio运行时环境。

数据加密

使用encryptencrypt_msgencrypt_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");
}

数据解密

使用decryptdecrypt_msgdecrypt_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.3
  • tokio: 1.35.1 (带有full功能)
  • colored: 2.1.0
  • env: 0.0.0
  • hex: 0.4.3
  • hmac: 0.12.1
  • indicatif: 0.17.7
  • pqcrypto-falcon: 0.3.0
  • pqcrypto-kyber: 0.8.0
  • pqcrypto-traits: 0.3.5
  • rand: 0.8.5
  • sha2: 0.10.8
  • tempfile: 3.9.0
  • chacha20: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