Skip to main content

Module fpe

Module fpe 

Source
Expand description

FPE(Format-Preserving Encryption)保留格式加密

基于 FNR(Flexible Naor-Reingold)算法,使用 SM4 作为底层密码:

  • 支持 1~128 位任意长度的明密文域
  • 明密文在同一域内(位数相同)
  • 支持 tweak(调整值)参数化加密

§使用示例

use libsmx::fpe::FpeKey;

let key = [0u8; 16];
let fpe = FpeKey::new(&key, 32).unwrap(); // 32 位域(如 IPv4 地址)
let tweak = fpe.expand_tweak(b"my-tweak");

let plaintext: u32 = 192_168_1_100; // 某 IPv4 地址
let mut data = plaintext.to_be_bytes();
let mut block = [0u8; 16];
block[..4].copy_from_slice(&data);

fpe.encrypt(&tweak, &mut block);
fpe.decrypt(&tweak, &mut block);

assert_eq!(&block[..4], &data);

Structs§

FpeKey
FPE 密钥(SM4 密钥 + 位数配置)
FpeTweak
FPE 扩展 tweak(15 字节)