2个版本
0.0.1 | 2022年11月9日 |
---|---|
0.0.0 | 2022年11月8日 |
#459 in #regex
20KB
426 代码行
字段加密
此库提供了一个FieldEncryption
结构体,允许将输入格式的值加密为输出格式的值,其中输入和输出格式由正则表达式描述。因此,它类似于格式保持加密方案,但允许加密字段的格式具有灵活性。
use field_encryption::FieldEncryption;
let fe = FieldEncryption::new(r"[A-Z][a-z]{1,4} [A-Z][a-z]{1-4}!", r"[a-z]{5} [a-z]{7}", &[0;32]).unwrap();
let cipher_text = fe.encrypt("Hello World!").unwrap();
println!("{}", cipher_text);
let plain_text = fe.decrypt(&cipher_text).unwrap();
println!("{}", plain_text);
输出
qtzwe mcdzozq
Hello World!
实现基于Black和Rogaway(2002年)的《具有任意有限域的密码》论文,工作原理如下
- 计算输入正则表达式变体的输入偏移量
- 使用Fiestal网络将偏移量加密到输出正则表达式的域中
- 使用论文中概述的“循环遍历”方法到达内部值
- 加密输出用作输出正则表达式变体的偏移量'n'
- 返回输出正则表达式的第n个变体作为密文
用途
此库可能有助于以符合现有数据模式的方式标记数据字段,例如,以匿名化数据集。
限制
- 我不是密码学家!无论如何都无法保证此库是密码学安全的。
依赖关系
~4.5MB
~54K SLoC