public class FPE extends Object implements Serializable
FPE是一种格式保持与明文相同的加密方式,通常用于数据脱敏中,因为它需要保持明密文的格式相同, 例如社保号经过加密之后并不是固定长度的杂文,而是相同格式、打乱的号码,依然是社保号的格式。
FPE算法可以保证:
Modifier and Type | Class and Description |
---|---|
static class |
FPE.FPEMode
FPE模式
FPE包括两种模式:FF1和FF3(FF2弃用),核心均为Feistel网络结构。 |
Constructor and Description |
---|
FPE(FPE.FPEMode mode,
byte[] key,
org.bouncycastle.crypto.AlphabetMapper mapper)
构造,使用空的Tweak
|
FPE(FPE.FPEMode mode,
byte[] key,
org.bouncycastle.crypto.AlphabetMapper mapper,
byte[] tweak)
构造
|
Modifier and Type | Method and Description |
---|---|
char[] |
decrypt(char[] data)
加密
|
String |
decrypt(String data)
解密
|
char[] |
encrypt(char[] data)
加密
|
String |
encrypt(String data)
加密
|
public FPE(FPE.FPEMode mode, byte[] key, org.bouncycastle.crypto.AlphabetMapper mapper)
mode
- FPE模式枚举,可选FF1或FF3-1key
- 密钥,null
表示随机密钥,长度必须是16bit、24bit或32bitmapper
- Alphabet字典映射,被加密的字符范围和这个映射必须一致,例如手机号、银行卡号等字段可以采用数字字母字典表public FPE(FPE.FPEMode mode, byte[] key, org.bouncycastle.crypto.AlphabetMapper mapper, byte[] tweak)
mode
- FPE模式枚举,可选FF1或FF3-1key
- 密钥,null
表示随机密钥,长度必须是16bit、24bit或32bitmapper
- Alphabet字典映射,被加密的字符范围和这个映射必须一致,例如手机号、银行卡号等字段可以采用数字字母字典表tweak
- Tweak是为了解决因局部加密而导致结果冲突问题,通常情况下将数据的不可变部分作为Tweak,null
使用默认长度全是0的bytespublic String encrypt(String data)
data
- 数据,数据必须在构造传入的AlphabetMapper
中定义的范围public char[] encrypt(char[] data)
data
- 数据,数据必须在构造传入的AlphabetMapper
中定义的范围public String decrypt(String data)
data
- 密文数据,数据必须在构造传入的AlphabetMapper
中定义的范围public char[] decrypt(char[] data)
data
- 密文数据,数据必须在构造传入的AlphabetMapper
中定义的范围Copyright © 2024. All rights reserved.