数据脱敏可通过掩码、加密和哈希等方式实现。1. 掩码隐藏部分数据,如手机号显示为1381234,身份证号显示为110101**011234;2. 使用aes对称加密可实现数据加密与解密;3. 哈希处理用于保留唯一性但不可逆,如将邮箱转为md5值;4. 根据需求选择策略:展示用掩码、需还原用加密、保留标识用哈希,结合pandas批量处理数据表。

数据脱敏是保护敏感信息的重要手段,尤其在处理用户隐私、金融交易或医疗记录时。Python 作为一门功能强大且易上手的编程语言,非常适合用于实现数据脱敏任务,比如字段加密和掩码处理。下面介绍几种常见但实用的方法。

1. 使用掩码隐藏部分数据
掩码是一种最常见的数据脱敏方式,常用于电话号码、身份证号、银行卡号等字段。做法通常是保留部分字符可见,其余用 * 或其他符号代替。

适用场景:
立即学习“Python免费学习笔记(深入)”;
显示用户手机号为 138****1234身份证号显示为 110101********1234
实现方法:

def mask_phone(phone, visible_length=3): return phone[:visible_length] + '*' * (len(phone) - visible_length)# 示例print(mask_phone("13812345678")) # 输出: 138********
如果是固定长度的字段,比如身份证号(18位),可以这样写:
def mask_id_card(id_card): return id_card[:6] + '*' * 6 + id_card[-6:]# 示例print(mask_id_card("110101199001011234")) # 输出: 110101******011234
提示: 对于变长字段要特别注意边界条件,比如字符串长度是否满足掩码要求。
2. 字段加密:使用对称加密算法 AES
如果希望原始数据完全不可见,同时又能在需要时解密还原,可以采用加密的方式。AES 是一种常见的对称加密算法,适合用于字段级加密。
安装依赖:
pip install pycryptodome
示例代码:
from Crypto.Cipher import AESfrom Crypto.Random import get_random_bytesfrom Crypto.Util.Padding import padimport base64key = get_random_bytes(16) # 16字节密钥cipher = AES.new(key, AES.MODE_CBC)def encrypt_data(data): data_bytes = data.encode('utf-8') ciphertext = cipher.encrypt(pad(data_bytes, AES.block_size)) return base64.b64encode(cipher.iv + ciphertext).decode('utf-8')# 示例encrypted = encrypt_data("张三")print(encrypted)
注意事项:
密钥必须妥善保存,否则无法解密。加密后的数据通常以 Base64 形式存储。如果你打算长期使用加密数据,建议将 IV(初始向量)与密文一起存储。
3. 敏感字段替换为哈希值
如果你只需要保留数据的唯一性而不关心可还原性,可以用哈希函数处理。例如将邮箱地址转为 MD5 值。
适用场景:
立即学习“Python免费学习笔记(深入)”;
用户ID映射成匿名标识符邮箱地址脱敏后仍可用于关联分析
示例代码:
import hashlibdef hash_email(email): return hashlib.md5(email.encode()).hexdigest()# 示例print(hash_email("zhangsan@example.com"))
优点: 简单快速,不可逆
缺点: 可能存在碰撞风险,不适合高安全等级场景
4. 数据脱敏策略的选择建议
根据不同的业务需求和安全级别,可以选择合适的脱敏方式:
仅展示用: 掩码处理即可需恢复原始数据: 用对称加密(如 AES)只需保留唯一标识: 用哈希批量处理数据表: 可结合 pandas 库进行列处理
举个例子:
import pandas as pddf = pd.DataFrame({ 'name': ['张三', '李四'], 'phone': ['13812345678', '13987654321']})df['phone'] = df['phone'].apply(lambda x: mask_phone(x))print(df)
基本上就这些。数据脱敏不复杂,但容易忽略细节,比如字段长度、加密密钥管理、数据一致性等。只要根据实际需求选对方法,用 Python 实现起来还是挺轻松的。
以上就是怎样用Python实现数据脱敏—字段加密与掩码技术的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1363431.html
微信扫一扫
支付宝扫一扫