3 个版本
0.0.3 | 2020年11月7日 |
---|---|
0.0.2 | 2020年11月4日 |
0.0.1 | 2020年11月4日 |
#1254 in 编码
62KB
1K SLoC
encon
Encon 是一个基于JSON的可选加密配置格式。它支持加密和明文字段的混合,并支持加密任意JSON值,使其非常灵活。
示例
use serde_json::json;
use encon::{Password, Map, Encryptable};
let pass = Password::new("strongpassword");
let mut map = Map::new();
map.insert("foo", Encryptable::Plain("Foo".into()));
map.insert("bar", Encryptable::Plain("Bar".into()));
map.get_mut(&"foo".to_owned()).unwrap().intend_encrypted();
assert_eq!(map.get(&"foo".to_owned()).unwrap().is_encrypted(), false);
assert_eq!(map.get(&"bar".to_owned()).unwrap().is_encrypted(), false);
map.apply_all_intents(&pass).unwrap();
assert_eq!(map.get(&"foo".to_owned()).unwrap().is_encrypted(), true);
assert_eq!(map.get(&"bar".to_owned()).unwrap().is_encrypted(), false);
let json = map.to_json_pretty().unwrap();
let mut map2: Map = serde_json::from_str(&json).unwrap();
assert_eq!(map2.get(&"foo".to_owned()).unwrap().is_encrypted(), true);
assert_eq!(map2.get(&"bar".to_owned()).unwrap().is_encrypted(), false);
let value = map2.get_mut(&"foo".to_owned()).unwrap()
.to_decrypted(&pass).unwrap()
.as_plain().unwrap().clone();
assert_eq!(value, json!("Foo"));
当前版本:0.0.1
其他Crates
encon-cli
:一个用于与encon JSON文件交互的命令行工具encon-js
:一个npm包 (npm install encon
)
所有Crates均采用MIT协议授权
依赖项
~20MB
~111K SLoC