0.2.0 |
|
---|
#6 in #ciphertext
31KB
713 行
封装器
使用 aes-gcm 和一个 KeyProvider
特性实现的 Rust 中的一个非常简单的封装器加密库。可以为 AWS KMS、Azure KeyVault、Hashicorp Vault 等实现 KeyProviders,但这个库只提供了一个可以与本地密钥一起使用的 SimpleKeyProvider
。
注意:此库非常初级,不适合生产使用
lib.rs
:
封装器是一个非常简单、可以安全加密数据的封装器加密库,可以使用 AWS KMS 等外部密钥提供者。它使用数据密钥的概念来加密消息,但这些数据密钥本身由密钥加密密钥(或 KEK,有时也称为客户主密钥)加密,生成的密文与加密数据一起存储(称为“包装”的数据密钥)。
使用方法
注意:这是 Alpha 软件不应在生产中使用
使用本地密钥提供者加密消息
SimpleKeyProvider
允许使用本地密钥进行封装加密。
use enveloper::{EnvelopeCipher, SimpleKeyProvider};
#
use hex_literal::hex;
let kek: [u8; 16] = hex!("00010203 04050607 08090a0b 0c0d0e0f");
let key_provider = SimpleKeyProvider::init(kek);
let cipher: EnvelopeCipher<SimpleKeyProvider> = 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 enveloper::{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");
#
依赖项
~28MB
~545K SLoC