手机号加密脱敏还原方案

IT全栈视野
• 阅读 339

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

一、手机号脱敏的必要性

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

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

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

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

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

具体操作:

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

对明文手机号字符串进行 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 标识来加密,这样能让密钥更具唯一性。

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

点赞
收藏
评论区
推荐文章
LinMeng LinMeng
4年前
手机号及身份证号的脱敏处理
详情见下desensitization(){//法人证件号码letstrthis.pageData.customerInfo.delegateCertithis.pageData.customerInfo.delegateCertistr.replace(/(w{2})w(w{4})/,
利用Jackson序列化实现数据脱敏
在项目中有些敏感信息不能直接展示,比如客户手机号、身份证、车牌号等信息,展示时均需要进行数据脱敏,防止泄露客户隐私。脱敏即是对数据的部分信息用脱敏符号()处理。
Wesley13 Wesley13
3年前
DES与RSA加解密
加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容。大体上分为双向加密 和单向加密 ,而双向加密又分为对称加密 和非对称加密(有些资料将加密直接分为对称加密和非对称加密)。 双向加密大体意思就是明文加密后形成密文,可以通过算法还原成明文。而
Wesley13 Wesley13
3年前
Java通过BCrypt加密
<divid"cnblogs\_post\_body"class"blogpostbody"<div一、概述</div<p&nbsp;</p<p在用户模块,对于用户密码的保护,通常都会进行加密。我们通常对密码进行加密,然后存放在数据库中,在用户进行登录的时候,将其输入的密码进行加密然后与数据库中存放的密文进行比较,以验证用户密码是否
Wesley13 Wesley13
3年前
Oracle汉字用户名数据脱敏长度不变,rpad函数使用
信息安全考虑,有时需要对用户名称进行数据脱敏。针对Oracle数据库,进行取数数据脱敏处理脱敏规则:长度小于9个字符,只保留前3个汉字与后3个汉字,中间全部由\填充。长度9个字及以上及奇数,隐去中间3个字;长度10个字及以上及奇数,隐去中间4个字。例如:公司名称:宇宙无敌厉害的超级大公司的杭州分公司 字段长度:18脱敏后:
Wesley13 Wesley13
3年前
Java日志脱敏框架 sensitive
项目介绍日志脱敏是常见的安全需求。普通的基于工具类方法的方式,对代码的入侵性太强。编写起来又特别麻烦。本项目提供基于注解的方式,并且内置了常见的脱敏方式,便于开发。特性基于注解的日志脱敏。可以自定义策略实现,策略生效条件。常见的脱敏内置方案。java深拷贝
专注IP定位 专注IP定位
8个月前
Telegram:自由、隐私与数字时代的难题
在当今数字时代,社交媒体已经成为人们沟通、分享信息和建立联系的主要方式之一。然而,随着科技不断发展,一些社交平台在保护用户隐私和开放性之间的平衡问题变得愈发突出。在这种情况下,Telegram作为备受关注的加密通讯平台,因其宽容的内容政策和强大的隐私保护功
不是海碗 不是海碗
1年前
探索基于人工智能的手机在网时长风险评估
引言在当今竞争激烈的商业环境中,企业面临着不断增长的风险和挑战。为了保持竞争优势和提供优质的用户体验,企业需要能够准确评估用户的风险,并提供个性化的服务来满足不同用户的需求。本文将介绍如何结合手机在网时长、手机在网状态和手机号码归属地三个API,可以实现一
四儿 四儿
1年前
点云标注中的隐私保护和数据安全问题
点云标注过程中涉及到大量的敏感数据和隐私信息,如车辆位置、道路环境等。因此,在点云标注中确保隐私保护和数据安全是非常重要的。首先,隐私保护需要注重数据匿名化和加密技术。通过对点云数据进行匿名处理,如去除位置信息、对数据进行加密等,可以保护车辆和个人的隐私信
Hutool:一行代码搞定数据脱敏 | 京东云技术团队
本文主要介绍了数据脱敏的相关内容,首先介绍了数据脱敏的概念,在此基础上介绍了常用的数据脱敏规则;随后介绍了本文的重点Hutool工具及其使用方法,在此基础上进行了实操,分别演示了使用DesensitizedUtil工具类、配合Jackson通过注解的方式完成数据脱敏;最后,介绍了一些常见的数据脱敏方法,并附上了对应的教程链接供大家参考,本文内容如有不当之处,还请大家批评指正。
IT全栈视野
IT全栈视野
Lv1
我的微信公众号:IT全栈视野 与你分享更多见闻知识。
文章
13
粉丝
2
获赞
2