当一些隐私数据不能直接展示时,可以用“*”来模糊掉完整信息,例如快递/外卖单上的用户名、联系方式、地址等。
灵活配置的后端数据脱敏,可以看页面开头的链接的文章,讲的比较详细,这里只取使用StringUtils对文本使用“*”替换部分信息,例如将“123456”替换为“12**56”
@Test
public void keyToText(){
// 利用StringUtils将数据脱敏为Ajx****************uJ9
String key = "Ajx1dHcldU68TcGks2suJ9";
// 左侧获取三个首字母开始拼接,这一步为"Ajx"
String res = StringUtils.left(key, 3).concat(
// 填充完*之后需要移除多余的*,这一步为"****************uJ9"
StringUtils.removeStart(
// 取出末尾三个字母,向左侧开始填充str的长度的*,然后再删除拼接后左侧多出来的三个*
StringUtils.leftPad(StringUtils.right(key, 3), StringUtils.length(key), "*"),
// 因为填充的是str的完整长度,所以需要去掉开头保留的三个字母的位置
"***"));
System.out.println(key);
System.out.println(res);
// Ajx1dHcldU68TcGks2suJ9
// Ajx****************uJ9
// ---------------------效果一样,但省去先填充后删除的步骤----------------------
// 获取开头三个字母,然后拼接
String res2 = StringUtils.left(key, 3).concat(
// 获取最右侧三个字母,向左填充*,数量为总的长度减去开头三个明文字母的长度
StringUtils.leftPad(StringUtils.right(key, 3), StringUtils.length(key)-3, "*"));
System.out.println(key);
System.out.println(res2);
// Ajx1dHcldU68TcGks2suJ9
// Ajx****************uJ9
}
}