#加密解密 #密钥 #Falcon #密钥对 #变体 #安全

crypt_guard_lite

一个紧凑且直观的库,它封装了 crypt_guard crate,使其核心功能易于访问和管理。此库提供基本的加密操作,包括密钥生成、加密、解密和数字签名,支持多个密钥变体,如 Falcon 和 Dilithium。其简化界面确保项目集成简单,提供强大安全机制,复杂度最低。

4 个版本

0.2.2 2024 年 6 月 9 日
0.2.1 2024 年 6 月 9 日
0.2.0 2024 年 6 月 9 日
0.1.0 2024 年 6 月 9 日

#677 in 加密学

MIT 许可证

47KB
619

CryptGuard Lite

Crates.io MIT licensed Documentation Hashnode Blog GitHub Library

概述

CryptGuard Lite 是一个紧凑且直观的库,它封装了 crypt_guard crate,使其核心功能易于访问和管理。此库提供基本的加密操作,包括密钥生成、加密、解密和数字签名,支持多个密钥变体,如 Falcon 和 Dilithium。其简化界面确保项目集成简单,提供强大安全机制,复杂度最低。

功能

  • 密钥生成:为 Falcon 和 Dilithium 密钥变体生成公钥和私钥对。
  • 加密/解密:使用 AES 和 XChaCha20 进行加密和解密,支持各种密钥大小。
  • 数字签名:使用 Falcon 和 Dilithium 密钥对创建和验证数字签名。
  • 支持多种密钥大小:适用于 Falcon 和 Dilithium 的不同密钥大小。

安装

将以下内容添加到您的 Cargo.toml

[dependencies]
crypt_guard = "1.2.10"
crypt_guard_lite = "0.2.2"

用法

密钥变体

该库支持两种密钥变体

#[derive(PartialEq, Debug)]
pub enum KeyVariants {
    Falcon,
    Dilithium
}

密钥生成

生成密钥

use crypt_guard_lite::{CryptGuard, KeyVariants, Sign, Crypto};
use crypt_guard::error::{SigningErr, CryptError};

// Dilithium key pair
let key_size = 5;
let (dilithium_public_key, dilithium_secret_key) = Sign::keypair(KeyVariants::Dilithium, key_size).unwrap();

// Falcon key pair
let key_size = 512;
let (falcon_public_key, falcon_secret_key) = Sign::keypair(KeyVariants::Falcon, key_size).unwrap();

// Kyber key pair
let key_size = 1024;
let (kyber_public_key, kyber_secret_key) = Crypto::keypair(key_size).unwrap();

加密

AES 加密

use crypt_guard_lite::{CryptGuard, Crypto};
use crypt_guard::error::CryptError;

pub fn main() -> Result<(), CryptError> {
    let key_size = 1024;
    let passphrase = "password".to_string();
    let (secret_key, public_key) = Crypto::keypair(key_size).unwrap();

    let mut guard = CryptGuard::cryptography(secret_key, key_size, passphrase.clone(), None, None);
    let data = b"hey, how are you".to_vec();
    let (encrypted_data, cipher) = guard.aencrypt(data.clone()).unwrap();
    println!("Encrypted data: {:?}", encrypted_data);

    let mut guard = CryptGuard::cryptography(public_key, key_size, passphrase.clone(), Some(cipher), None);
    let decrypted_data = guard.adecrypt(encrypted_data.clone()).unwrap();
    println!("Decrypted data: {:?}", decrypted_data);

    Ok(())
}

XChaCha20 加密

use crypt_guard_lite::{CryptGuard, Crypto};
use crypt_guard::error::CryptError;

pub fn main() -> Result<(), CryptError> {
    let key_size = 1024;
    let passphrase = "password".to_string();
    let (secret_key, public_key) = Crypto::keypair(key_size).unwrap();

    let mut guard = CryptGuard::cryptography(secret_key, key_size, passphrase.clone(), None, None);
    let data = b"hey, how are you".to_vec();
    let (encrypted_data, cipher, nonce) = guard.xencrypt(data.clone()).unwrap();
    println!("Encrypted data: {:?}", encrypted_data);

    let mut guard = CryptGuard::cryptography(public_key, key_size, passphrase.clone(), Some(cipher), Some(nonce.clone()));
    let decrypted_data = guard.xdecrypt(encrypted_data.clone(), nonce).unwrap();
    println!("Decrypted data: {:?}", decrypted_data);

    Ok(())
}

签名

使用 Dilithium 创建签名

use crypt_guard_lite::{CryptGuard, KeyVariants, Sign};
use crypt_guard::error::SigningErr;

pub fn main() -> Result<(), SigningErr> {
    let key_size = 5;
    let (public_key, secret_key) = Sign::keypair(KeyVariants::Dilithium, key_size).unwrap();
    let mut guard = CryptGuard::signature(secret_key, KeyVariants::Dilithium, key_size);

    let data = b"hey, how are you".to_vec();
    let signing_data = data.clone();

    let signature = guard.signed_data(signing_data.clone())?;
    println!("Signature: {:?}", signature);

    let mut guard = CryptGuard::signature(public_key, KeyVariants::Dilithium, key_size);
    let opened_data = guard.open(signature.clone())?;
    println!("Opened data: {:?}", opened_data);

    Ok(())
}

使用 Falcon 创建分离签名

use crypt_guard_lite::{CryptGuard, KeyVariants, Sign};
use crypt_guard::error::SigningErr;

pub fn main() -> Result<(), SigningErr> {
    let key_size = 512;
    let (public_key, secret_key) = Sign::keypair(KeyVariants::Falcon, key_size).unwrap();
    let mut guard = CryptGuard::signature(secret_key, KeyVariants::Falcon, key_size);

    let data = vec![1, 2, 3, 4, 5];
    let signature = guard.detached(data.clone())?;
    println!("Signature: {:?}", signature);

    let mut guard = CryptGuard::signature(public_key, KeyVariants::Falcon, key_size);
    let verified = guard.verify(data.clone(), signature.clone())?;
    println!("Verification: {:?}", verified);

    Ok(())
}

许可证

本项目采用 MIT 许可证。有关详细信息,请参阅 LICENSE 文件。

依赖项

~61–86MB
~1.5M SLoC