基于SM4国密算法的FF1保形加密实现
整体逻辑参照https://github.com/0NG/Format-Preserving-Encryption实现,目前只支持CBC模式,希望能实现其他模式。
玩具代码,不做密码学意义上的安全性保证,请谨慎使用。此外,仅在下述用例中测试通过,欢迎多多测试,找出问题。
感谢Google Gemini的大力支持。
用法
use ff1_encrypt;
use FF1Error;
let pt_str = "3216";
let tweak_str = "1329999";
let key: = ;
let expected_ciphertext_str = "8956";
let radix: u32 = 10;
let tweak_bytes = tweak_str.as_bytes;
let minlen = 2;
let maxlen = 100;
let max_tlen = 32;
let x_digits: = pt_str
.chars
.map
..unwrap;
let expected_digits: = expected_ciphertext_str
.chars
.map
..unwrap;
let result_digits = ff1_encrypt.unwrap;
assert_eq!;