13次发布
0.4.7 | 2024年3月5日 |
---|---|
0.4.6 | 2023年1月9日 |
0.4.5 | 2022年12月12日 |
0.4.4 | 2022年9月28日 |
0.1.0 | 2017年3月7日 |
#278 in 编码
4,053 每月下载量
在 2 个crate中使用 (通过 witchcraft-server)
31KB
687 行
serde-encrypted-value
Serde反序列化器,可透明地解密嵌入的加密字符串。
应用程序配置通常主要由非敏感信息组成,其中包含一些敏感信息,例如身份验证密钥或cookie加密密钥。在静止状态下将这些敏感值以加密形式存储可以防御在例如复制/粘贴配置时发生泄露,只要加密密钥没有额外泄露。
与https://github.com/palantir/encrypted-config-value兼容,但与该库不同,serde-encrypted-value不支持RSA。
用法
假设我们有一个看起来像的conf/encrypted-config-value.key
文件
AES:NwQZdNWsFmYMCNSQlfYPDJtFBgPzY8uZlFhMCLnxNQE=
和一个看起来像的conf/config.json
文件
{
"secret_value": "${enc:5BBfGvf90H6bApwfxUjNdoKRW1W+GZCbhBuBpzEogVBmQZyWFFxcKyf+UPV5FOhrw/wrVZyoL3npoDfYjPQV/zg0W/P9cVOw}",
"non_secret_value": "hello, world!"
}
extern crate serde;
extern crate serde_json;
extern crate serde_encrypted_value;
#[macro_use]
extern crate serde_derive;
use serde::Deserialize;
use std::io::Read;
use std::fs::File;
#[derive(Deserialize)]
struct Config {
secret_value: String,
non_secret_value: String,
}
fn main() {
let key = "conf/encrypted-config-value.key";
let key = serde_encrypted_value::Key::from_file(key)
.unwrap();
let mut config = vec![];
File::open("conf/config.json")
.unwrap()
.read_to_end(&mut config)
.unwrap();
let mut deserializer = serde_json::Deserializer::from_slice(&config);
let deserializer = serde_encrypted_value::Deserializer::new(
&mut deserializer, key.as_ref());
let config = Config::deserialize(deserializer).unwrap();
assert_eq!(config.secret_value, "L/TqOWz7E4z0SoeiTYBrqbqu");
assert_eq!(config.non_secret_value, "hello, world!");
}
许可证
此存储库在Apache 2.0许可证下提供。
依赖关系
~2–3MB
~62K SLoC