Java編寫日志手機號脫敏工具類
背景
在開發(fā)過程中,很容易將用戶敏感信息,例如手機號碼、身份證等,打印在日志平臺。為了保護用戶數(shù)據(jù),又不影響日志的打印,需要將日志中的敏感信息進行脫敏。
效果
沒看明白,強烈建議 pull項目,執(zhí)行一下項目中SensitiveUtils#main
方法。
特性
- 支持多層級【Json】/【對象】字段脫敏
- 支持一次多字段脫敏
- 支持除【連續(xù)數(shù)組層次(下面會舉例)】脫敏
- 不侵入業(yè)務(wù)代碼(例如使用注解進行脫敏)
使用
輸入為字符串/對象及單Json路徑
// 傳入對象 User user = new User(); user.setName("xiaoming"); user.setPhone("13455556666"); String strResult4 = SensitiveUtils.desMobilePhone(user, "phone"); System.out.println(strResult4); // {"phone":"134****6666","name":"xiaoming"} // 傳入json字符串 String str1 = "{\"name\":\"xiaoming\",\"phone\":\"13455556666\"}"; String strResult5 = SensitiveUtils.desMobilePhone(str1, "phone"); System.out.println(strResult5); // {"phone":"134****6666","name":"xiaoming"}
輸入為字符串/對象及多Json路徑
上圖中,如果要脫敏全部手機號,路徑則為 :phone
, parent#phone
String str8 = "[{\"name\":\"xiaoliu\",\"phone\":\"13522222222\",\"parent\":[{\"name\":\"oldliu\",\"phone\":\"13533333333\"}]},{\"name\":\"xiaowang\",\"phone\":\"13500000000\",\"parent\":[{\"name\":\"oldwang\",\"phone\":\"13511111111\"},{\"name\":\"oldzhang\",\"phone\":\"13555555555\"}]}]"; String strResult8 = SensitiveUtils.desMobilePhone(str8, new HashSet<>(Arrays.asList("phone", "parent#phone"))); System.out.println(strResult8); // [{"parent":[{"phone":"135****3333","name":"oldliu"}],"phone":"135****2222","name":"xiaoliu"},{"parent":[{"phone":"135****1111","name":"oldwang"},{"phone":"135****5555","name":"oldzhang"}],"phone":"135****0000","name":"xiaowang"}]
上圖中,如果要脫敏全部手機號,路徑則為 :phone
, parent#phone
String str9 = "{\"name\":\"xiaowang\",\"phone\":\"13500000000\",\"parent\":{\"name\":\"oldwang\",\"phone\":\"13511111111\"}}"; String strResult9 = SensitiveUtils.desMobilePhone(str9, new HashSet<>(Arrays.asList("phone", "parent#phone"))); System.out.println(strResult9);
已知缺陷
暫不支持連續(xù)倆層數(shù)組結(jié)構(gòu)的JSON字符串/對象
暫不支持對String以外類型脫敏
暫不支持字符串中【對象JSON字符串】脫敏
{ "info": "{\"data\":\"{\\\"phone\\\":\\\"13444444444\\\"}\"}" }
未來優(yōu)化方向
- 增加更多脫敏類型(如身份證號碼)
- 支持一個對象/Json字符串多種脫敏類型,例如:一個字符串同時脫敏手機號、身份證號
- 連續(xù)數(shù)組脫敏(待定)
- 支持非String類型字段脫敏(待定)
- 字符串中【對象JSON字符串】脫敏(待定)
到此這篇關(guān)于Java編寫日志手機號脫敏工具類的文章就介紹到這了,更多相關(guān)Java手機號脫敏內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring?Boot用戶注冊驗證的實現(xiàn)全過程記錄
最近在設(shè)計自己的博客系統(tǒng),涉及到用戶注冊與登錄驗證,所以下面這篇文章主要給大家介紹了關(guān)于Spring?Boot用戶注冊驗證的實現(xiàn)全過程,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-01-01SpringBoot自定義注解之實現(xiàn)AOP切面日志詳解
這篇文章主要為大家詳細介紹了SpringBoot自定義注解之實現(xiàn)AOP切面統(tǒng)一打印出入?yún)⑷罩?,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-09-09