Golang 脫敏擴展包:簡化敏感信息處理的利器


背景

在數據處理或清洗項目中,我們經常需要對敏感信息進行脫敏處理。這些敏感信息包括但不限於身份證號、手機號、郵箱地址和銀行卡號等。爲了簡化這類任務,可以編寫一個 Golang 的脫敏擴展包。該包封裝了一些常用的脫敏方法,以便在未來的開發中能更方便地進行敏感信息的處理,確保數據的安全和隱私保護。

包地址

該脫敏擴展包的代碼託管在 GitHub 上,可以通過以下鏈接訪問和下載:

https://github.com/GoFinalPack/pf_util

使用

安裝

要使用這個脫敏擴展包,使用 go get 命令來安裝最新版本的包

go get github.com/GoFinalPack/pf_util

PS: 目前更新到 v1.0.0 版本

使用示例

默認的脫敏

以下是一些使用默認脫敏方法的示例代碼:

import (
 "fmt"
 "pf_util"
 "testing"
)

/**
 * @Author: PFinal南丞
 * @Author: lampxiezi@163.com
 * @Date: 2024/9/2
 * @Desc:
 * @Project: pf_util
 */

func TestDesensitizedUtilUserId(T *testing.T) {
 d := pf_util.DesensitizedUtil{}
 res := d.SetType(0).Desensitized("10000") // 0 不暴露
 fmt.Println(res)
}

func TestDesensitizedUtilName(T *testing.T) {
 d := pf_util.DesensitizedUtil{}
 res := d.SetType(1).Desensitized("黃宗澤") // 0 不暴露
 fmt.Println(res)
}

func TestDesensitizedUtilIDcard(T *testing.T) {
 d := pf_util.DesensitizedUtil{}
 res := d.SetType(2).Desensitized("51343620000320711X") // 5***************1X
 fmt.Println(res)
}

Desensitized 方法提供了默認的脫敏功能,其中 SetType 方法用於設置脫敏類型。以下是支持的脫敏類型:

0  不暴露  直接返回 0
1 ChineseName 姓名脫敏
2 IdCard 身份證脫敏
3 FixedPhone 固定電話脫敏
4 MobilePhone 手機號脫敏
5 ADDRESS 地址脫敏
6 EMAIL 郵箱脫敏
7 PASSWORD 密碼脫敏
8 CarLicense 車牌號脫敏
9 BankCard 銀行卡脫敏
10 IPV4 IPV4脫敏
11 IPV6 IPV6脫敏
12 FirstMask 前幾位脫敏
13 ClearToNull 清空
14 ClearToEmpty 清空

自定義脫敏

還可以使用 Method 方法進行自定義脫敏。以下是自定義脫敏的示例代碼

func TestCustomerIDcard(T *testing.T) {
 d := pf_util.DesensitizedUtil{}
 res := d.Method("idCardNum""51343620000320711X", 4, 2) // 5134************1X
 fmt.Println(res)
}

PS:

Method 方法允許你進行更靈活的脫敏處理。第一個參數指定脫敏類型,第二個參數是需要脫敏的內容,第三個參數是脫敏的長度,第四個參數是脫敏的位置。例如

 d.Method("idCardNum""51343620000320711X", 4, 2) // 5134************1X
 d.Method("address""四川省成都市高新區天府三街", 8) // 四川省成都市*******

包結構

該包的結構如下所示:

├── README.md
├── go.mod
├── pf_util.go
├── tests
│   └── pf_utile_test.go
└── utils
    └── DesensitizedUtil.go

其中,DesensitizedUtil.go 文件提供了默認的脫敏方法和自定義脫敏方法。這些方法幫助你在開發中輕鬆實現敏感信息的脫敏處理。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/TWJVYY33xgXjiibTebIQEQ