身份證號(hào)碼作為國(guó)民身份證的重要認(rèn)證材料,其本身蘊(yùn)含著很多個(gè)人隱私信息,例如出生日期、籍貫、性別等。因此,在某些場(chǎng)景下,需要將身份證號(hào)碼進(jìn)行脫敏。身份證脫敏一般隱藏幾位,是項(xiàng)目中需要考慮的問(wèn)題之一。
一、隱藏幾位
身份證脫敏一般隱藏的位數(shù)有3位和4位兩種。將前3位和后3位(或前4位和后4位)保留,中間剩下的位數(shù)隱藏,例如:
110************001X 1100***********01X*
二、需求場(chǎng)景
身份證脫敏通常用于以下場(chǎng)景:
1、需求展示中,由于涉及用戶隱私,需要處理身份證號(hào)碼,但是不影響信息展示;
{ "name":"小明", "idCard":"420**********827" }
2、日志記錄中,需要脫敏身份證號(hào)碼,以便于對(duì)用戶隱私進(jìn)行保護(hù);
2021-09-01 13:25:44 [INFO] 用戶登錄,登錄賬戶:小紅,登錄IP:192.168.1.100,登錄設(shè)備:PC,身份證號(hào)碼:510***********092
三、Java代碼示例
下面是Java代碼示例,用于實(shí)現(xiàn)身份證號(hào)碼的脫敏:
/** * 身份證號(hào)碼脫敏 * @param idCard 身份證號(hào)碼 * @return 脫敏后的身份證號(hào)碼 */ 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位與中間的“*************”拼接起來(lái),返回脫敏后的身份證號(hào)碼。需要注意的是,代碼中使用了字符串的substring方法,截取了身份證號(hào)碼的前3位、后3位和中間的12位或13位。