6 个版本 (3 个重大更改)

0.8.2 2024年1月9日
0.8.1 2023年11月6日
0.8.0 2023年1月23日
0.7.0 2022年12月28日
0.3.0 2022年6月27日

#1006 in 加密学

Download history 182/week @ 2024-05-12 178/week @ 2024-05-19 51/week @ 2024-05-26 117/week @ 2024-06-02 79/week @ 2024-06-09 179/week @ 2024-06-16 184/week @ 2024-06-23 85/week @ 2024-06-30 8/week @ 2024-07-07 34/week @ 2024-07-14 41/week @ 2024-07-21 223/week @ 2024-07-28

306 每月下载量
2 个crate中使用(通过cipherstash-client

自定义许可

65KB
1.5K SLoC

封装器

使用 aes-gcm 和 KeyProvider trait 的非常简单的封装器加密库。可以为 AWS KMS、Azure KeyVault、Hashicorp Vault 等实现 KeyProvider,但此库仅包含一个 SimpleKeyProvider,该提供程序可以使用本地密钥。

注意:此库处于非常早期的 alpha 阶段,不适合生产使用

示例

AWS 密钥管理服务

为了运行 AWS KMS 示例,您需要确保设置了正确的环境变量或配置选项以连接到您的 AWS 账户。

有关帮助,请参阅 AWS 入门 文档。

需要帮助?

请访问我们的 支持论坛,我们将尽快回复您!


lib.rs:

封装器是一个非常简单、使用外部密钥提供程序(如 AWS KMS)来安全加密数据的封装器加密库。它使用数据密钥的概念来加密消息,但这些数据密钥本身由密钥加密密钥(或 KEK,有时也称为客户主密钥)加密,结果密文与加密数据(“包装”数据密钥)一起存储。

用法

注意:这是 alpha 软件且不应在生产环境中使用

使用本地密钥提供程序加密消息

SimpleKeyProvider 允许使用本地密钥使用封装器加密。

use envelopers::{
    Aes128Gcm, // or Aes256Gcm, Aes128GcmSiv, Aes256GcmSiv
    EnvelopeCipher,
    SimpleKeyProvider,
};

#
use hex_literal::hex;
let kek: [u8; 16] = hex!("00010203 04050607 08090a0b 0c0d0e0f");
let key_provider: SimpleKeyProvider<Aes128Gcm> = SimpleKeyProvider::init(kek);

let cipher: EnvelopeCipher<_> = EnvelopeCipher::init(key_provider);
let er = cipher.encrypt(b"hey there monkey boy").await.unwrap();
#

编码密文

#
#
#
#
#
let bytes = er.to_vec().unwrap();
hex::encode(&bytes);

解密密文

use envelopers::{Aes128Gcm, EnvelopeCipher, SimpleKeyProvider, EncryptedRecord};

#
#
#
#
let dec = EncryptedRecord::from_vec(bytes).unwrap();
let pt = cipher.decrypt(&dec).await.unwrap();

assert!(std::str::from_utf8(&pt).unwrap() == "hey there monkey boy");
#

依赖项

~10–15MB
~252K SLoC