当前位置: 首页 > news >正文

手机号加密脱敏还原方案

在当今数字化时代,数据的处理和保护至关重要。常常需要进行脱敏处理以保护用户隐私,但在特定需求下又要能准确还原,以下就为大家介绍一种手机号机密脱敏还原方案。

一、手机号脱敏的必要性

在企业的数据管理流程中,无论是为了满足数据共享时的合规性要求,还是防止内部数据处理过程中的意外泄露风险,对手机号进行脱敏处理都是必不可少的举措。

二、常见的手机号脱敏方式

部分隐藏替换这种方式是将手机号的中间几位数字用特定符号(如星号 “”)进行替换。例如,将手机号 13812345678 处理成 138***5678。这样在展示数据时,既能保留手机号的大致结构,又能有效隐藏关键部分的信息,防止他人直接获取完整手机号。

三、手机号机密脱敏还原方案

可采用对称加密算法(如 AES),其有多种加密模式,小编用的是 AES-ECB 方案。在该模式下,相同明文数据块用相同密钥加密,密文结果相同,比如对同一手机号多次加密(密钥不变),密文始终一致。

具体操作:

  1. 把明文手机号字符串替换成 186****456。

  2. 对明文手机号字符串进行 AES-ECB 加密。

在数据表 user 中,添加 phone、phone_encrypt 两个字段用于存储。

四、手机号登录
可通过对称加密算法 AES-ECB 得到的密文,去数据库里查询 phone_encrypt 并进行比较。接着查询此用户信息,以开展下一步逻辑操作。

五、手机号还原

对 phone_encrypt 密文采用 AES 解密,使用相同密钥,按特定逆变换步骤把密文还原成明文。

六、关于 AES 密钥 key
在 AES(高级加密标准)里,常见密钥长度规格有 128 位、192 位和 256 位。

我们可以随机生成一个 32 位的字符串:HUcISqfqAOe2ASWNpe3t9EfFc1V6T3N0,并且将它作为加密所使用的密钥哦。接下来,还有其他相关内容可以继续了解呢。

我采用的另外一种方案,是系统预先设置好的通用 uuid,其值为:e4b9440d-99f8-447d-b2d8-5161bee0bb1a 。

另外,我还封装了一个名为 AESKeyByUuid 的方法,这个方法的作用就是能够依据类似 UUID 格式的字符串,生成适用于 AES - 128 这种加密标准的密钥呢。


以下是该方法的go代码:

// AESKeyByUuid 从类似UUID格式的字符串生成适用于AES-128的密钥
func AESKeyByUuid(uuidStr string) []byte {
// 去掉UUID字符串中的 - 分隔符cleanUuidStr := strings.ReplaceAll(uuidStr, "-", "")// 使用SHA256对清理后的UUID字符串进行哈希处理hash := sha256.Sum256([]byte(cleanUuidStr))// 截取前16字节作为适用于AES-128的密钥
return hash[:16]// 这里你也可以用MD5处理也行,根据自己定义方法改变一下
// 返回32位字符串 即可
}

在加密前,我会用通用 uuid 来获取 AESKey,对新用户手机号进行加密。之所以封装成这种方法格式,是觉得后面可能还会用到。

七、身份证和银行卡敏感信息加密
为防止内部数据处理过程中出现意外泄露风险,对重要信息(如用户设置的银行卡、身份证信息)进行加密处理时,会调用当前用户的 uuid 标识来加密,这样能让密钥更具唯一性。

手机号包含了用户的重要身份关联信息,一旦泄露可能导致用户遭受骚扰电话、诈骗等诸多不良后果。欢迎大家分享更多方案。


http://www.mrgr.cn/news/66030.html

相关文章:

  • 某商务会所岗位规范化项目纪实
  • C 语言标准库 - <assert.h>
  • 开源竞争-数据驱动成长-11/05-大专生的思考
  • k8s和docker常用命令笔记
  • 应用层代理技术
  • Ubuntu 22.4 LTS 源码编译Tigervnc
  • 铠侠CD8系列产品对比 KCD81PUG3T20 KCD81PJE3T20 KCD81VUG3T20
  • 数据库范式设计
  • Stable Diffusion(2024)Ai绘画AIGC最新安装包资源下载+自学教程
  • w020基于Java的免税商品优选购物商城设计与实现
  • 103 - Lecture 2 Table and Data Part 1
  • 瑞芯微RK3568开发板Linux编译报错404怎么办?触觉智能教你轻松解决
  • 利士策分享,青年暴富难守,因何在?
  • Visitor 访问者模式
  • 【喂饭级AI教程】手把手教你在本机安装Stable Diffusion秋包【附带全套资源】
  • uniapp中echarts的正确集成方式:Vue2与Vue3组合式API双重视角
  • Java 序列化:深入探索 Serializable 接口
  • SpringBoot在线教育系统:安全与维护
  • Rust数据NoSQL 数据库的使用
  • 蒙特卡洛树搜索(MCTS)
  • 虚拟仿真平台在中医针灸实训室实验课程中的应用
  • 【ARM Linux 系统稳定性分析入门及渐进 1.9.1 -- Crash 命令 System State 集合】
  • Wecom酱搭建企业微信发送消息
  • 华为OD机试 - 删除字符串中出现次数最少的字符 (Java 2024 E卷 100分)
  • 手把手教程:使用 Fluentbit 采集夜莺日志写入 ElasticSearch
  • 目前的AI 到底是背出了答案,还是推理出了答案?