golang 数据脱敏

golang 数据脱敏 #

定义敏感型数据类型 #

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
type SensitiveType string

// String 屏蔽 print() 类的直接打印
func (v SensitiveType) String() string {
    if v == "" {
        return ""
    }
    return "******"
}

// MarshalJSON 屏蔽 json.Marshal() 类的直接打印
func (v SensitiveType) MarshalJSON() ([]byte, error) {
    if v != "" {
        return json.Marshal("******")
    }
    return json.Marshal("")
}

// Original 真正需要获取原始值时,v.Original() 强制获取
func (v SensitiveType) Original() string {
    return string(v)
}

GoDLP 数据清洗 #

GoDLP 提供了一系列针对敏感数据的识别和处置方案, 其中包括敏感数据识别算法,数据脱敏处理方式,业务自定义的配置选项和海量数据处理能力。GoDLP 能够应用多种隐私合规标准,对原始数据进行分级打标、判断敏感级别和实施相应的脱敏处理。 原文在这

效果还是很牛的,但是经测试,还是会有误判,慎用

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
func TestSensitive(inStr string) string {
	caller := "hide_str"
    eng, _ := dlp.NewEngine(caller)
    _ = eng.ApplyConfigDefault()

    inStr := `
        1DeidentifyinStr我的邮件是abcd@abcd.com,
        18612341234是我的电话 你家住在哪里啊?
        我家住在北京市海淀区北三环西路43号, 
        mac地址06-06-06-aa-bb-cc 收件人:张真人手机号码:13900000000)`
    outStr, _, _ := eng.Deidentify(inStr)

    t.Log(outStr)
	/*
		1DeidentifyinStr我的邮件是a***@********,
        186******34是我的电话 你家住在哪里啊?
        我家住在北京市海淀区北三环西路**号淀区北三环西路**号,
        mac地址06-06-06-**-**-** 收件人:张****** 手机号码:139******00)	
    */
}