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 |
|
#1006 in 加密学
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