当前位置: 首页 > news >正文

初级 Python 数据脱敏技术及应用

文章目录

  • 引言:为什么需要数据脱敏?
  • 常见的数据脱敏技术
    • 字符替换
    • 加密脱敏
    • 数据伪造
    • 组合策略
  • 数据脱敏的合规性和伦理
  • 脱敏方案选择
  • 脱敏操作的性能优化
  • 结论


引言:为什么需要数据脱敏?

随着数据隐私问题越来越受到重视,数据脱敏成为保护敏感信息的一个重要技术手段。数据脱敏(Data Masking)通过对敏感数据进行转换,确保其在保护隐私的同时仍能用于开发、测试、分析等非生产环境的操作。特别是在一些涉及个人隐私、金融数据和医疗数据的领域,合规性要求使得数据脱敏成为必不可少的一环。

常见应用场景包括:

  • 金融领域:处理银行卡号、交易记录等敏感信息时,必须采取数据脱敏措施,避免泄露用户隐私。
  • 医疗领域:医疗数据中包含大量的个人健康信息,如病历、诊疗记录等,这些信息的泄露可能带来严重的法律后果。
  • 测试和开发:在开发过程中,使用真实的敏感数据会增加数据泄露的风险,数据脱敏使得开发人员能够在不暴露真实数据的情况下进行测试和开发。

此外,全球多个隐私保护法规(如 GDPRCCPA 等)要求企业采取合适的数据保护措施,其中数据脱敏是确保合规性的重要方法之一。


常见的数据脱敏技术

字符替换

字符替换是最常见的脱敏方法之一。通过将敏感数据的部分字符替换为无意义的字符(如星号、数字或字母),我们可以使数据失去其原有的意义,但又能保留部分结构以供开发和测试使用。

示例:

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​/Nt​100%, 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. 用途概述 :: 被称为作用域…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型&#xff08;Primitive&#xff09; 和 对象类型&#xff08;Object&#xff09; 两大类&#xff0c;共 8 种&#xff08;ES11&#xff09;&#xff1a; 一、原始类型&#xff08;7种&#xff09; 1. undefined 定…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要&#xff1a; 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式&#xff08;自动驾驶、人工驾驶、远程驾驶、主动安全&#xff09;&#xff0c;并通过实时消息推送更新车…...

AI语音助手的Python实现

引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...