保护数据库信息,如何用Go语言+对称密钥做数据加密?

本文介绍了如何使用Go语言和对称密钥对数据库中的个人识别信息(PII)进行加密,以保护用户数据安全。文章详细阐述了数据写入和读取过程,以及AES加密算法的使用,并提供了一个具体的加密和解密函数示例,强调了在数据库操作中集成加密的重要性。

作者 | Purnaresa Yuliartanto

译者 | 凯隐

编辑 | Jane

出品 | 区块链大本营(ID:blockchain_camp)

个人识别信息(PII)是客户告知服务提供商(电子商务、金融服务等)的个人信息。作为服务提供者,他们有责任妥善保管信息。针对PII的攻击可能来自外部,也可能来自服务商内部。

 

为了抵御针对PII的攻击,将存储在数据库中的PII加密,这样组织内的员工就无法读取信息,外部攻击者在设法窃取数据库时也无法读取信息。

 

如何解决这一问题呢?本文就将为大家介绍用 Go语言为数据加密的策略。

 

一、数据写入

 

1、读取输入信息(明文)

2、将明文加密为密文

3、将密文写入到数据库中

 

二、数据读取

 

1、从数据库中读取密文

2、将密文解密为明文

3、发送明文

 

三、加密算法

 

对称密钥非常适合该任务的应用场景,其具有以下特点:

 

1、加密过程发生在一个缔约方(准确地说是同一服务)。因此无需与另一方交换密钥,双方使用同一密钥。

 

2、与非对称加密相比,对称加密速度更快,其带来的额外速度在数据交互服务总是受欢迎的。

 

3、每个数据字段中的文本可能很大。对称加密在加密大数据时具有更好的性能。

 

加密示例

kingsman ==> sLR9ctALjY0rtAi8IvosScCtBE21gyMOBl3xHzi52Hbo+H3O

 

四、示例

 

我们将以金融服务提供商的注册模块为例,展示如何对数据进行简单的加密保存和解密读取。

 

1、新用户创建函数

func createData(id, name, nationalID, createTimeUnix string) (err error) {
    _, err = DB.Exec(`
    INSERT INTO 
        user (id, name, national_id, create_time_unix)
    VALUES 
        ("?", "?", "?", "?")
    `, id, name, nationalID, createTimeUnix)
    return
}

上面的函数是用Go语言将数据写入数据库的最小函数。

 

这里将示例中的信息范围限制在4个属性:id,姓名,nationalID,createtimeunix。之后会用这个函数来集成加密函数。

 

2、数据读取函数

type User struct {
    ID             string
    Name           string
    NationalID     string
    CreateTimeU
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值