数据脱敏可通过掩码、加密和哈希等方式实现。1. 掩码隐藏部分数据,如手机号显示为1381234,身份证号显示为110101**011234;2. 使用aes对称加密可实现数据加密与解密;3. 哈希处理用于保留唯一性但不可逆,如将邮箱转为md5值;4. 根据需求选择策略:展示用掩码、需还原用加密、保留标识用哈希,结合pandas批量处理数据表。
数据脱敏是保护敏感信息的重要手段,尤其在处理用户隐私、金融交易或医疗记录时。Python 作为一门功能强大且易上手的编程语言,非常适合用于实现数据脱敏任务,比如字段加密和掩码处理。下面介绍几种常见但实用的方法。
掩码是一种最常见的数据脱敏方式,常用于电话号码、身份证号、银行卡号等字段。做法通常是保留部分字符可见,其余用 * 或其他符号代替。
适用场景:
立即学习“Python免费学习笔记(深入)”;
实现方法:
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
提示: 对于变长字段要特别注意边界条件,比如字符串长度是否满足掩码要求。
如果希望原始数据完全不可见,同时又能在需要时解密还原,可以采用加密的方式。AES 是一种常见的对称加密算法,适合用于字段级加密。
安装依赖:
pip install pycryptodome
示例代码:
from Crypto.Cipher import AES from Crypto.Random import get_random_bytes from Crypto.Util.Padding import pad import base64 key = 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(初始向量)与密文一起存储。
如果你只需要保留数据的唯一性而不关心可还原性,可以用哈希函数处理。例如将邮箱地址转为 MD5 值。
适用场景:
立即学习“Python免费学习笔记(深入)”;
示例代码:
import hashlib def hash_email(email): return hashlib.md5(email.encode()).hexdigest() # 示例 print(hash_email("zhangsan@example.com"))
优点: 简单快速,不可逆
缺点: 可能存在碰撞风险,不适合高安全等级场景
根据不同的业务需求和安全级别,可以选择合适的脱敏方式:
举个例子:
import pandas as pd df = pd.DataFrame({ 'name': ['张三', '李四'], 'phone': ['13812345678', '13987654321'] }) df['phone'] = df['phone'].apply(lambda x: mask_phone(x)) print(df)
基本上就这些。数据脱敏不复杂,但容易忽略细节,比如字段长度、加密密钥管理、数据一致性等。只要根据实际需求选对方法,用 Python 实现起来还是挺轻松的。
以上就是怎样用Python实现数据脱敏—字段加密与掩码技术的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号