数据预处理-数据脱敏-手机号码脱敏代码|学习笔记

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 快速学习数据预处理-数据脱敏-手机号码脱敏代码

开发者学堂课程【大数据实战项目:反爬虫系统(Lua+Spark+Redis+Hadoop 框架搭建)第三阶段数据预处理-数据脱敏-手机号码脱敏代码】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/671/detail/11648


数据预处理-数据脱敏-手机号码脱敏代码

实现手机号码脱敏这个过程

首先获取一个手机号码的正则表达式。接下来匹配出这个数据,使用正则表达式获取出有可能是手机号码的数据,做一个接收,先定义一个临时的接收数据的变量定义,这个变量就用它来接收的 message,这里面定一个变量,然后就叫 encrypted,val 一个 encrypted,就叫 encryptedDate 等于 message 数据进行临时接受一下,用正则表的是来匹配 encryptedDate 数据,然后来正则表达式 phonePattern.Matcher(encryptedDate)不做处理,直接将这里面有可能是数据有可能是手机号的所有的数据都匹配出来,进行一个接收 val,定义 phones,因为它可能会匹配出多个数据,所以加个 s,判断它一定是手机号,假设匹配上多个,遍历每一个可能是手机号的数据,使用 while 先找到手机号,再过滤出来。但是这个时候的手机号还不一定是手机号,要过滤出一个可能是手机号的数据,phone=phones.group 就拿到了手机号码

判断是不是一个手机号的方法:前一个位置不是数字,后面没有数据;或者前一个位置不是数字,手机号的后一个位置也不是数字,这两种情况它一定是手机号。就要拿取手机号前一个位置的字符和后一个位置的字符。得先找到前一个位置的角标和后一个位置的角标,后一个位置角标。

获取到手机号码首位数字,前一位的 index。即:

//获收到手机号码首位数字前一位的index

valbefIndex=encryptedData.indexof(phon)-1

//获取到下机号码最后一位数字后面一位的index

valaftIndex-encryptedData.indexof(phone)+11

同理获得手机号码最后一位数字。角标有了,要位置的值,前一个位置它不是数字,要字符。获取字符就获取它这里面 encryptedDate 这个数据,插 at,传进角标,就是角标对应的数据字符。定一个变量来进行接收,valbefLetter 叫前面这个数据当中位置的字符,同理可得后一个位置的字符,如下:

//获收到手机号码首位教字前一位的字符

valbefLetter=encrypteData.charAt(befIndex)

//获取到手机号码最后一位数字后面一位的字符

valaftletter=encryptedData.charAt(aftIndex)

一步判断一定是手机号码的数据。手机号码前一个位置不是数字且手机号码是最后一条数据,如果if手机号码前一个位置不是数字,用 befLetter.match,没有 match。先转化成 tostring,再.matches 后转化成数字的0~9的正则表达式,也就是说前面那个位置的字母,匹配数字没有匹配上,就不是数字。

后一个位置判断数据已经到了最后一位,假设后一个位置的角标长度是18,后面加了一个1是19,就用前面算出来的手机号码最后一位数字后面一位的角标大小大于这个字符串的长度就行。

如果的手机号码的后一个位置的角标 aftIndex 要不要大于 encryptedDate.若手机号的最后一位,后面的角标大于数据的总长度,那么表示这个数据这个手机号是数据的最后一位如下:

valbefLetter=encryptedData.charAt(befIndex).tostring

//获取到手机号码最后一位数字后面一位的字符

ValaftLetter=encryptedData.charAt(aftIndex).tostring

//3判断出一定是手机号的数据

//3-1手机号码前一个位置不是数字,并且手机号码是一条数据中的最后一个数据,那么表示这个一定是手机号

if(!befLetter.matches(regex=“^[0-9]$")){

//若手机号的最后一位后面的角标大于数据的总长度那么表示这个手机号是数据的最后一位

if(aftIndex>encryptedData.length){

确定手机号后对数据进行加密,手机号加密完了以后去替换原始数据。原始数据 encryptedDate 等于encryptedDate.数据替换 replace.Old 的在前面,新的在后面 old 是手机号。

手机号加密的方法提供有 util 里面有 decode,里面有一个 MD5方法就是用来做手机号码加密的,直接用。先把 Md5进行实例,如下: 

//用于实现手机号码的脱敏实现

def encryptedPhone(message: string) :Unit= {

//定义临时接受数据的变量

var encryptedData=message

//实例MD5

val md5=new MD5()

调用 MD5里面的方法。这个数据是要加密的数据,这里面也就是的手机号,如下: 

if (aftIndex>encryptedData. length){

//确定出是手机号后, 将手机号加密,替换原始的数据

encryptedData=encryptedData. replace(phone , md5.

getMD5ofstr(phone))

替换完以后返回 encryptedDate 这个数据。以上第一种情况,手机号码前一位不是数字,并且手机号的后一位它是最后一个数据。

第二种情况叫做手机号码的前一位不是数字,后一位也不是数字,如 abc18611577667def,就一定是手机号码。

第二步在判断条件的基础之上,前一位不是数字,已经判断了,后面一个位置角标大于数据的长度,就是最后一位,else 表示数据不是最后一位。前面一位不是数字已经判断了,而后一位也不是数字的判断方法,思路是一样的。如果手机号码的后一位的字符它不是数字,依然是这个数字的正则,那就代表了他后一位也不是数字,代码如下:

if( !aftletter. matches( regex = "^[0-9]$")){

前面不是数字,后面不是数字,它一定是手机号,一定是手机号,那么就继续来进行替换就可以了。继续替换,替换完以后脱敏工作做完了。这里面有一个点需要引一下,看获取手机号码的最后一位的角标,如果这个手机号码假设说它是最后一位,手机号码是最后一个数据这种情况,后面一位是角标可以得到,因为是加出来的数字可以拿到,但是如果是最后一位,通过最后一位的角标去拿取 charat,拿不到这个数据,拿不到就会报错。所以要把它换个位置,换到 else 里面来。也就是在 else 里面,如果不是最后一位 else,就用手机号码最后一个位置后面的字母。

这就是实现数据脱敏的手机号码脱敏的一个过程。

相关文章
Hutool 工具:轻松校验手机号、身份证号、邮箱、统一社会信用代码、车牌号、车架号等信息,省时省心!
Hutool 工具:轻松校验手机号、身份证号、邮箱、统一社会信用代码、车牌号、车架号等信息,省时省心!
|
存储 BI API
使用 ABAP 代码制作手机能够扫描的二维码(QRCode)试读版
使用 ABAP 代码制作手机能够扫描的二维码(QRCode)试读版
|
16天前
|
JavaScript 前端开发
在url中取ip或者键值对、手机号脱敏、电话号脱敏、身份证脱敏、银行卡号脱敏、身份证校验
本文提供了JavaScript代码示例,用于从URL中提取IP地址、键值对,以及对手机号、电话号码、身份证号和银行卡号进行脱敏处理,还包含了身份证号的校验方法。
21 0
|
4月前
|
开发者
|
5月前
|
搜索推荐 前端开发 UED
html页面实现自动适应手机浏览器(一行代码搞定)
html页面实现自动适应手机浏览器(一行代码搞定)
556 0
|
移动开发 安全 数据安全/隐私保护
怎么保护苹果手机移动应用程序ios ipa文件中的代码?
选择左侧的代码模块中的OC类名称或者Swift类名称,选择IPA种要混淆的二进制文件,然后勾选可执行文件代码里面的类名称。如果类太多可以使用搜索查看功能,ipaguard提供了级别选择,名称搜索,已选未选过滤来帮助配置混淆对象。
|
SQL 安全 前端开发
保护隐私安全,springboot手机号脱敏技术助你无忧通信
尊重用户隐私一直是我们在开发应用程序时应重视的问题。在当今移动互联网时代,手机号码作为个人重要信息之一,泄露可能导致隐私侵犯和骚扰问题。为了保护用户的手机号安全,我们可以借助Spring Boot框架提供的强大功能,实现手机号脱敏的有效保护,让通信更加安心无忧。
214 0
保护隐私安全,springboot手机号脱敏技术助你无忧通信
|
JavaScript
手机移动端返回顶部js代码demo效果示例(整理)
手机移动端返回顶部js代码demo效果示例(整理)

热门文章

最新文章