#加密解密 #密钥派生 #元数据 #数据 #安全 #反序列化 #序列化

secured-enclave

专为 Rust 中的数据安全加密和解密设计的便捷库

7 个版本 (破坏性更新)

0.6.0 2023 年 12 月 19 日
0.5.1 2023 年 12 月 18 日
0.4.0 2023 年 12 月 3 日
0.3.0 2023 年 12 月 2 日
0.1.0 2023 年 11 月 29 日

#1879 in 密码学

Download history 7/week @ 2024-04-01 5/week @ 2024-05-27

每月 84 次下载
用于 secured

MIT 许可证

72KB
982

secured-enclave

概述

secured-enclave 是一个 Rust 包,旨在提供安全和高效的加密解密数据方式。它提供使用各种加密算法、密钥派生策略以及元数据支持的强大加密方式。

功能

  • 安全加密解密:使用 ChaCha20Poly1305 进行加密和身份验证,确保强大的安全性。
  • 元数据支持:允许将元数据与加密数据关联。
  • 灵活的密钥管理:支持不同的密钥派生策略以增强安全性。
  • 序列化和反序列化:轻松序列化和反序列化加密数据以进行存储或传输。

安装

将以下行添加到您的 Cargo.toml 文件

[dependencies]
secured-enclave = "0.5.0"

用法

基本加密解密

加密数据

use secured_enclave::{Enclave, Encryptable, KeyDerivationStrategy};

let password = "strong_password";
let encrypted_string = "Hello, world!".encrypt(password.to_string(), KeyDerivationStrategy::default());

解密数据

use secured_enclave::{Decryptable, EnclaveError};

let password = "strong_password";
let decrypted_result = encrypted_data.decrypt(password.to_string());

println!("Decrypted data: {:?}", String::from_utf8(decrypted_data).unwrap())

高级用法

使用自定义策略加密

在需要时还可以进行更多控制

use secured_enclave::{Enclave, KeyDerivationStrategy};

fn main() {
   // Key generation (32bytes for the key, 16 bytes for salt)
   let key = Key::<32, 16>::new(b"my password", KeyDerivationStrategy::PBKDF2(900_000)); // 900K iterations

   // Leave some readable metadata (but signed!)
   let metadata = b"some metadata".to_vec();

   // Using Enclave for data encapsulation (&str metadata, 8-byte nonce)
   let enclave =
    Enclave::from_plain_bytes(metadata, key.pubk, b"Some bytes to encrypt".to_vec())
      .unwrap();

   // Get encrypted bytes (ciphertext)
   println!("Encrypted bytes: {:?}", enclave.encrypted_bytes);

   // Serialize everything to bytes
   let bytes: Vec<u8> = enclave.into();

   // Decrypt Enclave
   let decrypted_bytes = enclave.decrypt(key.pubk).unwrap();

   assert_eq!(decrypted_bytes, b"Some bytes to encrypt");
}

使用元数据解密

use enclave::{Decryptable, EnclaveError};

let decryption_result = encrypted_data_with_metadata.decrypt_with_metadata::<Vec<u8>>(key);
match decryption_result {
    Ok((decrypted_data, metadata)) => {
        println!("Decrypted data: {:?}", String::from_utf8(decrypted_data).unwrap());
        println!("Metadata: {:?}", String::from_utf8(metadata).unwrap());
    },
    Err(e) => println!("Error during decryption: {:?}", e),
}

测试

该包包含一套全面的单元测试。使用以下命令运行测试

cargo test

贡献

欢迎贡献!请在提交拉取请求之前阅读我们的贡献指南。

许可证

本项目采用 MIT 许可证


本 README 提供了开始使用 Enclave 包的基本指南。有关更详细的文档,请参阅 API 文档

依赖关系

~2MB
~40K SLoC