需求

由于cookie信息中可能带有敏感信息:用户手机号、用户身份证号(ID),对于这些敏感信息,我们在做数据处理的时候需要进行脱敏,以免暴露用户信息。
使用MD5算法对用户的敏感信息进行加密

比如
原始cookie如下,手机号以及身份证都是未加密的,

JSESSIONID=782121159357898886-112554CF44321E; sid=b5cc11e02e154ac5b0f3609332f86803; aid=8ae8768760927e280160bb348bef3e12; identifyStatus=N; userType4logCookie=M; userId4logCookie=13818791413; useridCookie=13818791413; userCodeCookie=13818791413; temp_zh=cou%3D0%3Bsegt%3D%E5%8D%95%E7%A8%8B%3Btime%3D2018-01-13%3B%E5%B9%BF%E5%B7%9E-%E5%8C%97%E4%BA%AC%3B1%2C0%2C0%3B%26cou%3D1%3Bsegt%3D%E5%8D%95%E7%A8%8B%3Btime%3D2020-12-15%3B%E5%B9%BF%E5%B7%9E-%E6%88%90%E9%83%BD%3B1%2C0%2C0%3B%26; JSESSIONID=782121159357898886-112554CF44321E; WT-FPC=id=211.103.142.26-608782688.30635197:lv=1516170718655:ss=1516170709449:fs=1513243317440:pn=2:vn=10; language=zh_CN; WT.al_flight=WT.al_hctype(S)%3AWT.al_adultnum(1)%3AWT.al_childnum(0)%3AWT.al_infantnum(0)%3AWT.al_orgcity1(CAN)%3AWT.al_dstcity1(CTU)%3AWT.al_orgdate1(2020-12-15)

加密后cookie

JSESSIONID=CAEA9F35113024AFC14F33793B0287C2-112554CF44321E; sid=b5cc11e02e154ac5b0f3609332f86803; aid=8ae8768760927e280160bb348bef3e12; identifyStatus=N; userType4logCookie=M; userId4logCookie=D1279C812D20ABDB6612BA7AF1C5D13C; useridCookie=D1279C812D20ABDB6612BA7AF1C5D13C; userCodeCookie=D1279C812D20ABDB6612BA7AF1C5D13C; temp_zh=cou%3D0%3Bsegt%3D%E5%8D%95%E7%A8%8B%3Btime%3D2018-01-13%3B%E5%B9%BF%E5%B7%9E-%E5%8C%97%E4%BA%AC%3B1%2C0%2C0%3B%26cou%3D1%3Bsegt%3D%E5%8D%95%E7%A8%8B%3Btime%3D2020-12-15%3B%E5%B9%BF%E5%B7%9E-%E6%88%90%E9%83%BD%3B1%2C0%2C0%3B%26; JSESSIONID=CAEA9F35113024AFC14F33793B0287C2-112554CF44321E; WT-FPC=id=211.103.142.26-608782688.30635197:lv=1516170718655:ss=1516170709449:fs=1513243317440:pn=2:vn=10; language=zh_CN; WT.al_flight=WT.al_hctype(S)%3AWT.al_adultnum(1)%3AWT.al_childnum(0)%3AWT.al_infantnum(0)%3AWT.al_orgcity1(CAN)%3AWT.al_dstcity1(CTU)%3AWT.al_orgdate1(2020-12-15)

实现

import com.air.antispider.stream.common.util.decode.MD5import java.util.regex.{Matcher, Pattern}/*** 数据脱敏,就是对身份证信息和手机号信息进行加密*/
object EncryptedData {def encryptedPhone(log: AccessLog): String = {//获取手机号字段,var因为后面还要改var cookie: String = log.http_cookie//获取MD5对象val md5 = new MD5//编写手机号匹配的正则表达式val pattern: Pattern = Pattern.compile("(13[0-9]|14[01456879]|15[0-3,5-9]|16[2567]|17[0-8]|18[0-9]|19[0-3,5-9])\\d{8}")//利用正则表达式对cookie进行匹配val matcher: Matcher = pattern.matcher(log.http_cookie)while (matcher.find()) {//因为有些满足正则的并不是手机号,比如示例中lv开头的需要排除这些//手机号的特点是前面是=,后面是;//获取匹配的手机号的前以为的索引,之后可以利用索引获取匹配内容的前一个字符var lowIndex: Int = log.http_cookie.indexOf(matcher.group()) - 1//手机号的后一位下标var lastIndex: Int = lowIndex + matcher.group().length + 1//根据前一位下标获取相应的值val lowerLetter: String = log.http_cookie.charAt(lowIndex).toString//需要保证匹配内容前一位不是数字,匹配内容的前一位还是数字就不是手机号了if (!lowerLetter.matches("^[0-9]$")) {//保证我们获取的后一位下标不能超出整个字符串的长度if (lastIndex < log.http_cookie.length) {//获取手机号的后一位val lastLetter: String = log.http_cookie.charAt(lastIndex).toString//判断后一位的值也不能是数字if (!lastLetter.matches("^[0-9]$")) {//将匹配到的手机号用加密后的内容替换cookie = cookie.replace(matcher.group(), md5.getMD5ofStr(matcher.group()))}} else {cookie = cookie.replace(matcher.group(), md5.getMD5ofStr(matcher.group()))}}}//返回加密后的cookie,用于后续进一步处理cookie}def encryptedCardId(log: AccessLog): String = {var cookie: String = log.http_cookie//获取MD5val md5 = new MD5//获取身份证的正则表达式val pattern: Pattern = Pattern.compile("(\\d{18})|(\\d{17}(\\d|X|x))")//获取matcher对象val matcher: Matcher = pattern.matcher(log.http_cookie)while (matcher.find()) {var lowIndex: Int = log.http_cookie.indexOf(matcher.group()) - 1var lastIndex: Int = lowIndex + matcher.group().length + 1val lowerLetter: String = log.http_cookie.charAt(lowIndex).toStringif (!lowerLetter.matches("^[0-9]$")) {//保证我们获取的后一位下标不能超出整个字符串的长度if (lastIndex < log.http_cookie.length) {//获取身份证号的后一位val lastLetter: String = log.http_cookie.charAt(lastIndex).toString//判断后一位的值也不能是数字if (!lastLetter.matches("^[0-9]$")) {//将cookie中的身份证号用加密后的内容替换cookie = cookie.replace(matcher.group(), md5.getMD5ofStr(matcher.group()))}} else {cookie = cookie.replace(matcher.group(), md5.getMD5ofStr(matcher.group()))}}}cookie}
}

练习项目--cookie数据脱敏相关推荐

  1. informatica数据脱敏_助您首个大数据项目破茧成蝶的实践指南

    自从本世纪初软件应用开始在整个业务流程中盛行以来,一个不争的事实就是:数据改变了我们的工作方式.越来越多的企业认识到必须在大数据方面有所作为,但他们却并未切实规划出如何开展这项工作.而调查发现,切实展 ...

  2. 安全-认证授权、数据脱敏

    一.认证授权 JWT :JWT(JSON Web Token)是一种身份认证的方式,JWT 本质上就一段签名的 JSON 格式的数据.由于它是带有签名的,因此接收者便可以验证它的真实性. SSO(单点 ...

  3. 互联网金融售前心得数据脱敏分析 | PMCAFF微分享

     本期主题 | 互联网金融售前心得&数据脱敏分析 分享嘉宾 | Gina 文字整理 | Mayi-天享 入群请联系管理员37°C微信号:erhuoyimei Gina 本期嘉 ...

  4. 数据脱敏和加密_Apache ShardingSphere数据脱敏全解决方案详解

    解决方案详解 在了解了ShardingSphere脱敏处理流程后,即可将脱敏配置.脱敏处理流程与实际场景进行结合.所有的设计开发都是为了解决业务场景遇到的痛点.那么面对之前提到的业务场景需求,又应该如 ...

  5. Springboot 配置文件、隐私数据脱敏的最佳实践(原理+源码)

    这几天公司在排查内部数据账号泄漏,原因是发现某些实习生小可爱居然连带着账号.密码将源码私传到GitHub上,导致核心数据外漏,孩子还是没挨过社会毒打,这种事的后果可大可小. 说起这个我是比较有感触的, ...

  6. 数据脱敏和加密_数据脱敏和数据加密的区别--工作需要,对其进行了简单的整理...

    转至:https://blog.csdn.net/zfh_0916/article/details/104688307 通过查阅资料,了解数据脱敏和数据加密是两种截然不同的技术,根据不同的应用目的选用 ...

  7. python个人数据脱敏_数据脱敏的处理方法及查询

    [摘要] 关键词:集算器.SPL.数据脱敏.报表 1).数据脱敏是"指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护.在涉及客户安全数据或者一些商业性敏感数据的情况下, ...

  8. 数据脱敏:保障数据安全的脱敏方案

    来源:首席数据科学家 " 今天和大家聊聊在数据工作中的常见场景:脱敏." 数据安全,一向是我们做数据的同学所必须关注的.我们之前分享过<数据安全治理>.<个保法施 ...

  9. Springboot 日志、配置文件、接口数据脱敏

    核心隐私数据无论对于企业还是用户来说尤其重要,因此要想办法杜绝各种隐私数据的泄漏.下面陈某带大家从以下三个方面讲解一下隐私数据如何脱敏,也是日常开发中需要注意的: 配置文件数据脱敏 接口返回数据脱敏 ...

最新文章

  1. JS日历控件集合----附效果图、源代码
  2. android应用程序开发_深圳app开发公司:跨平台应用程序开发工具有哪些?
  3. 站在巨人肩膀上的意思就是拒绝重复造轮子,分享12个常见的js插件
  4. C++总结笔记(九)—— 多态
  5. 【HDU - 1530】Maximum Clique(最大团问题,图论)
  6. 卡尔曼滤波和粒子滤波最直白的解释
  7. 模板题——堆排序 哈希表 字符串哈希
  8. RecyclerView Widget 使用
  9. linux安装vmd软件步骤,科学网-VMD (linux下分子可视化软件)-刘雪静的博文
  10. php--adodb如何连接数据库
  11. nmap超快高效扫描端口
  12. 如何卸载ultraedit_怎么卸载ultra-edit32我安装了u – 手机爱问
  13. win7蓝牙怎么连接_win7添加打印机提示windows无法连接怎么办?正确解决方法分享...
  14. hdu2073 无限的路 瞎搞
  15. iOS 3DTouch的小细节
  16. CC2640R2F之配对绑定与解除绑定篇
  17. python入门教学反思_Python语言教学反思
  18. 和数集团首款自研虚拟数字人上线,“始祖龙”带你跨山海,链未来
  19. MySQL修改数据表中的字段名
  20. JAVA读取邮件 [AUTH] Username and password not accepted

热门文章

  1. 如何用阿里云服务器建立一个wordpress网站?
  2. 云服务器可以用来做什么?有什么用途?
  3. angelajs中ajax,Fabric.js Triangle angle属性用法及代码示例
  4. java 微信开发图片发送,微信开发?Java上传Base64图片
  5. cesium 飞行定位
  6. 量子计算机代表人物,量子力学究竟“可怕”在哪?科学家的怀疑或许是对的
  7. html 显示接口数据格式化,科技常识:html格式化输出JSON示例(测试接口)
  8. java读xml文件一般用什么_java读xml文件
  9. r语言结构方程模型可视化_R语言时间序列分析(二):ts对象及其可视化
  10. 如何共享计算机磁盘,扩展群集共享磁盘的分区 - Windows Server | Microsoft Docs