身份證號碼作為國民身份證的重要認證材料,其本身蘊含著很多個人隱私信息,例如出生日期、籍貫、性別等。因此,在某些場景下,需要將身份證號碼進行脫敏。身份證脫敏一般隱藏幾位,是項目中需要考慮的問題之一。
一、隱藏幾位
身份證脫敏一般隱藏的位數有3位和4位兩種。將前3位和后3位(或前4位和后4位)保留,中間剩下的位數隱藏,例如:
110************001X 1100***********01X*
二、需求場景
身份證脫敏通常用于以下場景:
1、需求展示中,由于涉及用戶隱私,需要處理身份證號碼,但是不影響信息展示;
{ "name":"小明", "idCard":"420**********827" }
2、日志記錄中,需要脫敏身份證號碼,以便于對用戶隱私進行保護;
2021-09-01 13:25:44 [INFO] 用戶登錄,登錄賬戶:小紅,登錄IP:192.168.1.100,登錄設備:PC,身份證號碼:510***********092
三、Java代碼示例
下面是Java代碼示例,用于實現身份證號碼的脫敏:
/** * 身份證號碼脫敏 * @param idCard 身份證號碼 * @return 脫敏后的身份證號碼 */ public static String idCardMask(String idCard) { if (idCard != null && idCard.length() == 18) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append(idCard.substring(0, 3)) .append("*************".substring(0, 12)) .append(idCard.substring(15, 18)); return stringBuilder.toString(); } return null; }
使用StringBuilder將前3位和后3位與中間的“*************”拼接起來,返回脫敏后的身份證號碼。需要注意的是,代碼中使用了字符串的substring方法,截取了身份證號碼的前3位、后3位和中間的12位或13位。