初级 Python 数据脱敏技术及应用
文章目录
- 引言:为什么需要数据脱敏?
- 常见的数据脱敏技术
- 字符替换
- 加密脱敏
- 数据伪造
- 组合策略
- 数据脱敏的合规性和伦理
- 脱敏方案选择
- 脱敏操作的性能优化
- 结论
引言:为什么需要数据脱敏?
随着数据隐私问题越来越受到重视,数据脱敏成为保护敏感信息的一个重要技术手段。数据脱敏(Data Masking)通过对敏感数据进行转换,确保其在保护隐私的同时仍能用于开发、测试、分析等非生产环境的操作。特别是在一些涉及个人隐私、金融数据和医疗数据的领域,合规性要求使得数据脱敏成为必不可少的一环。
常见应用场景包括:
- 金融领域:处理银行卡号、交易记录等敏感信息时,必须采取数据脱敏措施,避免泄露用户隐私。
- 医疗领域:医疗数据中包含大量的个人健康信息,如病历、诊疗记录等,这些信息的泄露可能带来严重的法律后果。
- 测试和开发:在开发过程中,使用真实的敏感数据会增加数据泄露的风险,数据脱敏使得开发人员能够在不暴露真实数据的情况下进行测试和开发。
此外,全球多个隐私保护法规(如 GDPR、CCPA 等)要求企业采取合适的数据保护措施,其中数据脱敏是确保合规性的重要方法之一。
常见的数据脱敏技术
字符替换
字符替换是最常见的脱敏方法之一。通过将敏感数据的部分字符替换为无意义的字符(如星号、数字或字母),我们可以使数据失去其原有的意义,但又能保留部分结构以供开发和测试使用。
示例:
import redef mask_phone_number(phone_number):return re.sub(r'(\d{3})\d{4}(\d{4})', r'\1****\2', phone_number)phone_number = "13812345678"
masked_phone_number = mask_phone_number(phone_number)
print(masked_phone_number)
输出:
138****5678
这种方法适用于手机号、银行卡号、身份证号等常见的数据类型。
加密脱敏
对于一些高敏感度数据,字符替换可能不足以确保数据的安全性,此时可以使用加密技术。通过对数据进行加密,可以确保只有授权的人员才能访问真实数据。
Python 提供了多种加密方法,常见的如对称加密(AES)和非对称加密(RSA)。cryptography
库为 Python 提供了易于使用的加密工具。
示例:
from cryptography.fernet import Fernet# 生成密钥
key = Fernet.generate_key()
cipher_suite = Fernet(key)# 加密和解密
def encrypt_data(data):return cipher_suite.encrypt(data.encode()).decode()def decrypt_data(encrypted_data):return cipher_suite.decrypt(encrypted_data.encode()).decode()# 示例数据
sensitive_data = "1234567890"
encrypted_data = encrypt_data(sensitive_data)
print(f"Encrypted: {encrypted_data}")decrypted_data = decrypt_data(encrypted_data)
print(f"Decrypted: {decrypted_data}")
输出:
Encrypted: gAAAAABlYwFe9w-8L-xyqvb-K-_AX9gJ6BVsZWkG3CKdCmTr2yJzEqD2S1loef7w_TiI7YUnRlgnOkfDfzFznt71acBsvINv1g==
Decrypted: 1234567890
加密脱敏确保了即使数据被盗取,未经授权的用户也无法访问原始信息。
数据伪造
数据伪造是指使用工具生成与真实数据相似但不含敏感信息的假数据。这种方式广泛应用于开发和测试环境,能够避免暴露真实数据的风险。
示例:
from faker import Fakerfake = Faker()def generate_fake_data():return {"name": fake.name(),"address": fake.address(),"email": fake.email(),"phone_number": fake.phone_number()}fake_data = generate_fake_data()
print(fake_data)
输出:
{'name': 'Kenny Jackson','address': '29944 Martin Divide\nPort Joseph, OK 07869','email': 'kenneth40@gmail.com','phone_number': '987-543-7640'
}
这种方法特别适用于需要大量数据进行测试的场景,同时不会暴露任何真实用户信息。
组合策略
在实际应用中,通常会结合多种脱敏技术来确保数据的安全性。例如,可以将字符替换与加密技术结合,以在保留数据结构的同时提高数据安全性。
示例:
def mask_and_encrypt(phone_number):masked_number = re.sub(r'(\d{3})\d{4}(\d{4})', r'\1****\2', phone_number)encrypted_number = encrypt_data(masked_number)return encrypted_numberphone_number = "13812345678"
encrypted_masked_number = mask_and_encrypt(phone_number)
print(encrypted_masked_number)
这样,敏感数据在存储时既进行了字符替换,又经过加密处理,确保了更高的安全性。
数据脱敏的合规性和伦理
随着数据隐私问题的日益严重,许多国家和地区制定了严格的数据保护法规。例如,GDPR(General Data Protection Regulation)规定了对个人数据的保护要求,其中就包括了数据脱敏的必要性。企业在处理敏感数据时必须确保数据的隐私性和安全性,防止数据泄露。
关键合规性要求:
- 数据最小化原则:仅收集和处理必需的敏感数据,避免多余数据的存储和传输。
- 匿名化和脱敏:对于处理敏感数据的开发和测试环境,应使用数据脱敏技术,以防泄露真实信息。
- 访问控制和审计:限制对敏感数据的访问,并记录访问日志,确保合规性。
脱敏技术是确保这些合规性要求的重要手段之一。
脱敏方案选择
不同的脱敏方法适用于不同的应用场景。以下是几种常见脱敏方法的对比:
脱敏方法 | 优点 | 缺点 | 适用场景 |
---|---|---|---|
字符替换 | 简单快速,易于实现 | 数据可逆性,适用于部分场景 | 电话、邮箱等 |
加密脱敏 | 高安全性,数据无法直接恢复 | 加密解密过程可能导致性能问题 | 高敏感数据 |
数据伪造 | 适用于大量数据测试,无真实数据暴露 | 数据可能不符合真实场景需求 | 测试、开发环境 |
组合策略 | 高度定制化,可根据需求选择最佳方法 | 实现较为复杂 | 复杂业务场景 |
选择合适的脱敏方法时,开发人员应根据数据的敏感性、存储要求、性能需求等因素进行综合考量。
脱敏操作的性能优化
在处理大数据量时,脱敏操作的性能可能成为瓶颈。为了提高脱敏过程的效率,可以采取以下优化措施:
- 批量处理:对于大规模数据,可以使用批处理方式对数据进行脱敏操作,而不是一条一条地处理。
- 并行化处理:通过多线程或分布式计算框架(如 Apache Spark)来并行处理数据脱敏任务,提升效率。
- 内存优化:对于加密和解密操作,使用高效的加密算法,并避免重复加密解密。
结论
数据脱敏是确保数据隐私和安全的关键技术。在现代的应用中,数据脱敏不仅是保护用户隐私的必要措施,还可以帮助企业遵守法律法规。不同的脱敏方法适用于不同的场景,开发人员应根据具体需求选择合适的脱敏策略。同时,在处理大数据时,性能优化也不可忽视。
相关文章:
初级 Python 数据脱敏技术及应用
文章目录 引言:为什么需要数据脱敏?常见的数据脱敏技术字符替换加密脱敏数据伪造组合策略 数据脱敏的合规性和伦理脱敏方案选择脱敏操作的性能优化结论 引言:为什么需要数据脱敏? 随着数据隐私问题越来越受到重视,数据…...
1063 Set Similarity (25)
Given two sets of integers, the similarity of the sets is defined to be Nc/Nt100%, where Nc is the number of distinct common numbers shared by the two sets, and Nt is the total number of distinct numbers in the two sets. Your job is to calculate th…...
Web登录页面设计
记录第一个前端界面,暑假期间写的,用了Lottie动画和canvas标签做动画,登录和注册也连接了数据库。 图片是从网上找的,如有侵权私信我删除,谢谢啦~...
【大数据学习 | Spark】Spark on hive与 hive on Spark的区别
1. Spark on hive Spark on hive指的是使用Hive的元数据(Metastore)和SQL解析器(HiveQL)。这种方式下,spark可以读取和写入hive表,利用hive的元数据信息来进行表结构的定义和管理。 具体特点为: 1.1 元数据共享 sp…...
软件测试丨Pytest 第三方插件与 Hook 函数
Pytest不仅是一个用于编写简单和复杂测试的框架,还有大量的第三方插件以及灵活的Hook函数供我们使用,这些功能大大增强了其在软件测试中的应用。通过使用Pytest,测试开发变得简便、安全、高效,同时也能帮助我们更快地修复Bug&…...
Python学习35天
# 定义父类 class Computer: CPUNone MemoryNone diskNone def __init__(self,CPU,Memory,disk): self.disk disk self.Memory Memory self.CPU CPU def get_details(self): return f"CPU:{self.CPU}\tdisk:{self.disk}\t…...
IO基础(字符集与字符流)
在字节流中,文件中的中文显示的是乱码。 在计算机存储体系中,以字节为最小存储单位,一个英文占一字节。 字符集类型 ASCII字符集,又叫编码表,编码表中有128个数据,其中大小写字母、符号、数字等。GB2312…...
LLM应用-prompt提示:RAG query重写、相似query生成 加强检索准确率
参考: https://zhuanlan.zhihu.com/p/719510286 1、query重写 你是一名AI助手,负责在RAG(知识库)系统中通过重构用户查询来提高检索效果。根据原始查询,将其重写得更具体、详细,以便更有可能检索到相关信…...
[python脚本处理文件入门]-17.Python如何操作Excel文件的读写
哈喽,大家好,我是木头左! 在Python中,处理Excel文件最常用的库之一是xlrd,它用于读取Excel文件。而当需要创建或写入Excel文件时,xlwt库则是一个不错的选择。这两个库虽然功能强大,但使用起来也非常简单直观。 安装与导入 确保你已经安装了这两个库。如果没有安装,可以…...
深度理解进程的概念(Linux)
目录 一、冯诺依曼体系 二、操作系统(OS) 设计操作系统的目的 核心功能 系统调用 三、进程的概念与基本操作 简介 查看进程 通过系统调用获取进程标识符 通过系统调用创建进程——fork() 四、进程的状态 操作系统中的运行、阻塞和挂起 理解linux内核链表 Linux的进…...
【C++】STL容器中的比较函数对象
目录 set、map容器 priority_queue容器 在STL中涉及到以某种规则排序的容器都需要比较函数对象,比如:set、map、priority_queue这些容器内部都是依赖比较函数对象以某种规则存储数据的。STL容器中的比较函数对象可以是:函数指针、仿函数(函…...
深度学习基础02_损失函数BP算法(上)
目录 一、损失函数 1、线性回归损失函数 1.MAE损失 2.MSE损失 3.SmoothL1Loss 2、多分类损失函数--CrossEntropyLoss 3、二分类损失函数--BCELoss 4、总结 二、BP算法 1、前向传播 1.输入层(Input Layer)到隐藏层(Hidden Layer) 2.隐藏层(Hidden Layer)到输出层(Ou…...
6.584-Lab4A
6.584-LabA HomeworkReference CodeReference Blog 通过作业提供的概览图可以看出整个系统的组成:用户 Clerk 会发出命令(Get、Put、Append)到每个 Service,每个 Service 接收到命令后向下传递到 RaftCode 层,由 RaftC…...
语义版本控制
注意: 本文内容于 2024-11-27 22:25:05 创建,可能不会在此平台上进行更新。如果您希望查看最新版本或更多相关内容,请访问原文地址:语义版本控制。感谢您的关注与支持! 由于自己平时喜欢写点小玩意,自然而…...
深入理解HTML基本结构:构建现代网页的基石
深入理解HTML基本结构:构建现代网页的基石 在数字时代,HTML(超文本标记语言)是构建和设计网页的基础。了解HTML的基本结构对于任何希望掌握网页开发的人来说至关重要。本文将详细介绍HTML文件的基本骨架,包括其核心标…...
一体化数据安全平台uDSP 入选【年度创新安全产品 TOP10】榜单
近日,由 FreeBuf 主办的 FCIS 2024 网络安全创新大会在上海隆重举行。大会现场揭晓了第十届 WitAwards 中国网络安全行业年度评选获奖名单,该评选自 2015 年举办以来一直饱受赞誉,备受关注,评选旨在以最专业的角度和最公正的态度&…...
【机器学习】机器学习的基本分类-监督学习(Supervised Learning)
监督学习是一种通过已有的输入数据(特征)和目标输出(标签)对模型进行训练的机器学习方法,旨在学到一个函数,将输入映射到正确的输出。 1. 监督学习概述 监督学习需要: 输入数据(特…...
Oracle之提高PLSQL的执行性能
目录 1、SQL解析详解 2、演示示例 3、启用Oracle跟踪事件 4、查看改造后SQL性能对比结果 更多技术干货,关注个人博客吧 1、SQL解析详解 SQL解析是数据块处理SQL语句不可缺少的步骤,是在解析器中执行的。将SQL转换成数据库可以执行的低级指令。 SQL解析分为硬解析和软…...
[VSCode] vscode下载安装及安装中文插件详解(附下载文件)
前言 vscode 链接:https://pan.quark.cn/s/3acbb8aed758 提取码:dSyt VSCode 是一款由微软开发且跨平台的免费源代码编辑器;该软件支持语法高亮、代码自动补全、代码重构、查看定义功能,并且内置了命令行工具和Git版本控制系统。 …...
PHP中类名加双冒号的作用
在 PHP 中,类名加双冒号(::) 是一种用于访问类的静态成员和常量的语法。它也可以用来调用类的静态方法和访问 PHP 的类相关关键词(如 parent、self 和 static)。以下是详细的解释和用法。 1. 用途概述 :: 被称为作用域…...
前端编程训练 异步编程篇 请求接口 vue与react中的异步
文章目录 前言代码执行顺序的几个关键点接口请求vue与react中的异步vue中的异步react的state修改异步 前言 本文是B站三十的前端课的笔记前端编程训练,异步编程篇 代码执行顺序的几个关键点 我们可以理解为代码就是一行一行,一句一句是执行(定义变量&…...
【kafka03】消息队列与微服务之Kafka 读写数据
Kafka 读写数据 参考文档 Apache Kafka 常见命令 kafka-topics.sh #消息的管理命令 kafka-console-producer.sh #生产者的模拟命令 kafka-console-consumer.sh #消费者的模拟命令 创建 Topic 创建topic名为 chen,partitions(分区)为3࿰…...
【分布式系统】唯一性ID的实现
1、UUID(通用唯一标识符) 1、UUID本身 一种用于标识信息的标准化方法。一个128位的数字,常表示为32个十六进制数字,以连字符分隔成五组:8-4-4-4-12。 版本: UUID有不同的版本,最常见的是基于时…...
哪里能找到好用的动物视频素材 优质网站推荐
想让你的短视频增添些活泼生动的动物元素?无论是搞笑的宠物瞬间,还是野外猛兽的雄姿,这些素材都能让视频更具吸引力。今天就为大家推荐几个超实用的动物视频素材网站,不论你是短视频新手还是老手,都能在这些网站找到心…...
SRAM芯片数据采集解决方案
SRAM芯片数据采集解决方案致力于提供一种高效、稳定且易于操作的方法,以确保从静态随机存取存储器SRAM芯片中准确无误地获取数据。 这种解决方案通常包括硬件接口和软件工具,它们协同工作,以实现对SRAM芯片的无缝访问和数据传输。 在硬件方…...
【贪心算法第七弹——674.最长连续递增序列(easy)】
目录 1.题目解析 题目来源 测试用例 2.算法原理 3.实战代码 代码分析 1.题目解析 题目来源 674.最长递增子序列——力扣 测试用例 2.算法原理 贪心思路 3.实战代码 class Solution { public:int findLengthOfLCIS(vector<int>& nums) {int n nums.size();in…...
[AI] 知之AI推出3D智能宠物:助力语言学习与口语提升的新选择
Hello! 知之AI官网 [AI] 知之AI推出3D智能宠物:助力语言学习与口语提升的新选择 随着人工智能技术的飞速发展,虚拟助手和智能设备不断进入我们的生活。近日,知之AI重磅推出了一款创新产品——3D智能宠物。这一产品不仅具备多国语言交流能力&…...
Android 14之HIDL转AIDL通信
Android 14之HIDL转AIDL通信 1、interface接口1.1 接口变更1.2 生成hidl2aidl工具1.3 执行hidl2aidl指令1.4 修改aidl的Android.bp文件1.5 创建路径1.6 拷贝生成的aidl到1和current1.7 更新与冻结版本1.8 编译模块接口 2、服务端代码适配hal代码修改2.1 修改Android.bp的hidl依…...
【R库包安装】R库包安装总结:conda、CRAN等
【R库包安装】R studio 安装rgdal库/BPST库 R studio 安装rgdal库解决方法 R studio 安装BPST库(github)解决方法方法1:使用devtools安装方法2:下载安装包直接在Rstudio中安装 参考 基础 R 库包的安装可参见另一博客-【R库包安装】…...
学习PMC要不要去培训班?
在当今快速变化的商业环境中,PMC作为供应链管理的核心环节之一,其重要性日益凸显。PMC不仅关乎产品的物料计划、采购、库存控制及物流协调,还直接影响到企业的生产效率、成本控制以及市场竞争力。面对这一专业领域的学习需求,许多…...
建设银行网站特色/互联网营销是干什么
胰岛素活性药物成分市场的企业竞争态势 该报告涉及的主要国际市场参与者有Novo Nordisk、Eli Lilly、Tong Hua Dong Bao Group、Wanbang Biopharmaceuticals等。这些参与者的市场份额、收入、公司概况和SWOT分析都包含在胰岛素活性药物成分市场调研报告中。 产品分类࿱…...
昌平区做网站/益阳网络推广
uva1610 聚会游戏(细节处理) 输入一个n(n<1000且为偶数)个字符串的集合D,找一个长度最短的字符串(不一定要在D中出现)S,使得D中恰好一半字符串小于等于S,另一半大于S。…...
商城网站建设哪家好/百度seo关键词排名推荐
文章目录散点图matplotlib绘制散点图seaborn绘制散点图pyecharts绘制散点图源码地址本文可以学习到以下内容:matplotlib 中文乱码解决办法seaborn 中文乱码解决办法seaborn 库csv数据下载地址用matplotlib、seaborn、pyecharts绘制散点图 散点图 小凡在做数据分析的…...
专业的培训网站建设/整合营销经典案例
文章目录yield 以及生成器和迭代器列表推导式装饰器巧用断言assertPython 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法…...
大武口做网站的/百度竞价推广是什么工作
装饰器模式 装饰器模式,动态地给一个对象添加一些额外的职责,就增加功能来说,装饰器模式比生成子类更为灵活。 代码示例 #coding:utf-8 #装饰器模式class Beverage():name ""price 0.0type "BEVERAGE"def getPrice(se…...
快速搭建网站 优帮云/谷歌独立站seo
在我们生活中,对于账户的自动登录已经很常见了,所以利用过滤器实现这个功能。主要介绍用户的自动登录和取消自动登录,以及实现一天自动登录或者n天实现自动登录,当用户ip被加入到黑名单之后,直接利用过滤器返回一个警告…...