首页 > 其他分享 >Golang 脱敏扩展包:简化敏感信息处理的利器

Golang 脱敏扩展包:简化敏感信息处理的利器

时间:2024-09-03 09:48:04浏览次数:8  
标签:util 信息处理 res Golang pf DesensitizedUtil go 脱敏

Golang 脱敏扩展包:简化敏感信息处理的利器

原创 PFinal南丞 PFinalClub    2024年09月03日 07:36 上海 听全文 PFinalClub 一个有信念者所开发出的力量,大于99个只有兴趣者。 88篇原创内容 公众号

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: [email protected]
 * @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 文件提供了默认的脱敏方法和自定义脱敏方法。这些方法帮助你在开发中轻松实现敏感信息的脱敏处理。

 

阅读 134   ​

标签:util,信息处理,res,Golang,pf,DesensitizedUtil,go,脱敏
From: https://www.cnblogs.com/cheyunhua/p/18393965

相关文章

  • 使用Golang的协程竟然变慢了|100万个协程的归并排序耗时分析
    前言这篇文章将用三个版本的归并排序,为大家分析使用协程排序的时间开销(被排序的切片长度由128到1000w)本期demo地址:https://github.com/BaiZe1998/go-learning往期视频讲解......
  • golang使用http客户端 多个协程同时请求接口
    packagemainimport( "encoding/json" "fmt" "io" "net/http" "net/url" "sync")typeApiResponsestruct{ Codeint`json:"code"` Msgstring`json:"msg&qu......
  • openGauss-动态数据脱敏机制
    openGauss-动态数据脱敏机制可获得性本特性自openGauss1.1.0版本开始引入。特性简介数据脱敏是行之有效的数据库隐私保护方案之一,可以在一定程度上限制非授权用户对隐私数据的窥探。动态数据脱敏机制是一种通过定制化制定脱敏策略从而实现对隐私数据保护的一种技术,可以有效......
  • Golang小项目(1)
    Golang小项目(1)前言本项目适合Golang初学者,通过简单的项目实践来加深对Golang的基本语法和Web开发的理解。建议前往torna.top查阅效果更佳项目结构.├──main.go└──static├──form.html└──index.html项目流程图定义三个路由:/:首......
  • golang新特性:泛型
    泛型Go的泛型(或者或类型形参)目前可使用在3个地方泛型类型-类型定义中带类型形参的类型泛型receiver-泛型类型的receiver泛型函数-带类型形参的函数为了实现泛型,Go引入了一些新的概念:类型形参类型形参列表类型实参类型约束实例化-泛型类型不能直接使用,要......
  • golang 标准库(os)
    os标准库实现了平台(操作系统)无关的编程接口。1.创建文件packagemainimport( "fmt" "os")//创建文件funcCreatFile(FileNamestring){ f,err:=os.Create(FileName) iferr!=nil{ fmt.Println("err:",err) }else{ fmt.Printf("创建文件%v成......
  • golang interface{} Type assertions类型断言 x.(T) 和Type switches类型选择 switch
    在golang的开发中,我们经常会用到类型断言typeassertions和switchx.(type)类型选择,他们都可以对interface{}空接口类型的数据进行类型断言,他们的功能类似但是有区别,区别如下:共同点:都可以对interface{} /any类型的数据进行数据类型的断言区别:  类型断言x.(T)......
  • golang mutex原理
    最近面试遇到问锁的问题,答得不是很好,重新做一下总结梳理 go中的sync包提供了两种锁的类型,分别是互斥锁sync.Mutex和读写锁sync.RWMutex,这两种锁都属于悲观锁饥饿模式与正常模式在下面的内容会经常涉及到一个概念,饥饿模式,这里先简单说一下1.正常模式(非公平锁)正常模式下,所......
  • golang RSA 解密前端jsencrypt发送的数据时异常 crypto/rsa: decryption error 解决方
    golang中RSA解密前端(jsencrypt)发来的密文后出现 "crypto/rsa:decryptionerror" ,这个问题首先需要确认你的私匙和公匙是否匹配,如果匹配那检查入参数据类型,前端发送来的rsa加密后的数据一般都是经过base64编码后的,在后端进行RSA解码时需要对前端发送的数据进行base64......
  • RabbitMQ 从原理到实战—golang版本
    1.MQ1.1概念MQ(MessageQueue,消息队列)是一种用于在分布式系统中实现消息传递和异步通信的技术。它充当了发送方和接收方之间的中间人,用于在应用程序或服务之间传递消息。MQ允许系统中的不同组件彼此独立运行,而无需直接通信或相互依赖,从而提高系统的可扩展性、可靠性和灵......