---
# System prepended metadata

title: 資料遮罩
tags: [工程雲]

---

# 資料遮罩及加密
在後端即將資料做遮罩，不在前端做，目前實作以下幾種

* 身分證字號遮罩 (6-10碼為*)
* 姓名 (第2碼為*)
* 加密
* 自訂義

## 使用 Annotation 方式
1. 在要遮罩屬性上加上 @Desensitization

* 統號範例
```
    @Desensitization(type = DesensitizationType.personId)
    private String id;
```

---

* 姓名範例
```
    @Desensitization(type = DesensitizationType.personName)
    private String pname;
```

---

* 加密範例
加密使用情境通常為還要用到遮罩的資料作為查詢條件、報表查詢條件等，使用以下兩個屬性，一為遮罩統號做為顯示使用，二為加密後的資料作為二次查詢條件，需搭配後端解密方式

加密DTO 
```
    @Desensitization(type = DesensitizationType.encrypt)
    private String id;

    @Desensitization(type = DesensitizationType.personId)
    public String getMaskId() {
        return this.id;
    }
```

解密DTO，解密屬性需加上 @CipherTextDeserialize，在後端即可取得解密後資料
```
public class BidPrjPeCipherPK extends BidPrjPePrimaryKey {

    @CipherTextDeserialize
    private String id;
}
```


---


## 使用程式化方式
使用 PwcMaskUtils


TODO 待整理