数据预处理-数据脱敏总结|学习笔记

简介: 快速学习数据预处理-数据脱敏总结

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

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


数据预处理-数据脱敏总结


内容介绍:

一、脱敏思路

二、关键代码

回顾整体的实现思路,脱敏的目的:数据中含有身份证号码,手机号码等敏感信息,为防止数据泄露,需将敏感进行加密操作。


一、脱敏思路

先把数据读过来,然后获取到身份证号或者是手机号的正则表达式。用正则去匹配数据,匹配出有可能是手机或者是身份证号的数据。拿到每一个数据的时候,都得判断它,因为正则匹配出来的,不一定百分百是,接下来就判断它一定是一个手机号码。有两种情况,一种情况是前面一位数字手机号的第一位,不是数字,并且手机号码最后一位的后面它也不是数字,两种情况如:abc18611577667def

Abcdef18611577667

W18611577667d23

判断出一定是手机号以后,加密后的数据去替换原始的数据。身份证号脱敏实际上和手机号脱敏的思路是一模一样,不同之处在于两个数据的正则表达式不一样,且身份证号码的长度是18位,手机号码的长度是11位。


二、关键代码

1、获取kafka的数据

2、获取手机号和身份证号码的正则表达式

valphonePattern=Pattern.compile("((13[0一

9])1(14[517])1(15([0一3]1[5一91]))1(17[0一9])1(18[0,5一9])\d{8}")

3、使用正则匹配数据获取出有可能是手机号的数据

valphones=phonePattern.matcher(encryptedData)

4、判断出一定是手机号的数据

4.1、手机号码前一个位置不是数字,并且后一位也不是数字,那么表示这个一定是手机号

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

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

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

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

if(!befLettermatches("A[0一9]$")){

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

ifCaftIndex>encryptedoata.length){

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

encryptedData=encryptedData.replace(phone,md5,getMD5ofstr(phone))

}e1se{//表示数据不是最后一位

//3-2手机号码前一个位置不是数字,并且后一位也不是数字,那么表示这个一定是手机号

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

Val aftLetter=encryptedData.charAt(aftIndex).tostring

if(laftLetter。matches("A[0一9]$")){

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

encryptedData=encryptedData.replace(phone,nd5.getMD5ofstr(phone))

}

身份证号的脱敏:和我们前面的手机脱敏一模一样,只不过这俩正则和长度不一样,其他的都是一样的。

相关文章
|
3月前
|
关系型数据库 分布式数据库 数据库
议程抢先看|2026阿里云PolarDB开发者大会,重磅来袭
2026年1月20日,阿里云PolarDB开发者大会将于上海五角场凯悦酒店举行!聚焦数据库前沿技术,1场主论坛+3场分论坛,探讨行业趋势与创新实践。议程精彩,报名从速!
|
6月前
|
安全 PHP 开发工具
Web渗透信息收集进阶
网站敏感目录与文件指易被恶意扫描利用的路径,如后台管理、.git、.svn等,可能导致源码泄露或权限入侵。常用工具如御剑、Dirbuster、Dirsearch可探测此类信息,需加强安全防护。
1054 58
Web渗透信息收集进阶
|
2月前
|
数据采集 监控 数据可视化
你的数据质量可靠吗?一份评估数据质量的实用指南
数据质量是企业数据驱动的生命线。本文深入探讨其六大核心维度:准确性、完整性、一致性、及时性、唯一性与有效性,解析低质数据带来的决策失误、效率低下等痛点,并分享如何通过业务与技术协同,借助工具实现质量规则的自动化监控与持续改进,构建可信数据体系。
|
8月前
|
存储 人工智能 JavaScript
Java中的数据类型转换
本文介绍了 Java 中常见的数据类型转换方法,涵盖字符串与整型、长整型、浮点型、布尔型及日期类型的相互转换,并讲解了可能出现的异常和处理方式。
330 0
|
11月前
|
监控 安全 测试技术
|
JavaScript 前端开发 异构计算
兼容移动手机的js拖拽插件Draggin.js
兼容移动手机的js拖拽插件Draggin.js
407 1
|
存储 缓存 前端开发
PWA 如何实现离线功能
PWA(渐进式Web应用)通过Service Worker技术实现离线功能。Service Worker作为浏览器和网络之间的代理,可以缓存网页资源,在用户离线时提供缓存内容,确保应用正常运行。
|
机器学习/深度学习 人工智能 编解码
全面升级的“新清影”,给AI生成视频带来了哪些新玩法?
智谱清言App近日上线了“新清影”,并开源了最新的图生视频模型CogVideoX v1.5。相比之前的版本,“新清影”在视频分辨率、生成速度、多通道生成能力和模型性能等方面均有显著提升,支持生成10秒、4K、60帧的超高清视频。此外,即将上线的音效功能将进一步提升视频的逼真度和实用性,标志着AI视频创作进入“有声时代”。这些改进使得内容创作变得更加高效和便捷,为创作者提供了更多可能性。
516 2
|
文字识别 Java 计算机视觉
【神技解锁】Spring Boot + Tess4J:一图胜千言,瞬间变文字,颠覆你的视觉体验!
【8月更文挑战第29天】本文详细介绍了如何在 Spring Boot 项目中集成 Tess4J,实现高效本地与远程图片的光学字符识别(OCR)处理。通过具体步骤展示了如何添加依赖、配置 OCR 引擎、创建图片处理服务及控制器,并提供了测试方法。这不仅适用于文本识别场景,还可扩展至其他图像处理任务,为项目增添实用功能。
2065 1
|
Dart IDE Unix
Flutter:创建和发布一个 Dart Package
在 Dart 生态系统中使用 packages(包) 实现代码的共享,比如一些 library 和工具。本文旨在介绍如何创建和发布一个 package。
1020 0
Flutter:创建和发布一个 Dart Package