经典脱敏算法—泛化类截断法

​截断方法:对数值、字符型,截断不需要的,保留关键数据位(156893...—留156)

import time # 做性能测试
import pandas as pd
import random
import xlwt  # 先安装pip install

#随机替换函数
def replace_str_1(str, start, end):
    if len(str) >= (start + end):
        return str[:start] + ''.join(random.sample('0123456789', end)) + str[start+end:]
    else:
        return str
def replace_str(str, start, end):
    if len(str) > (start + end):
        return str[:start] + ''.join(random.sample('******************', end)) + str[start + end:]
    else:
        return str

#打开需要加密文件
data_test = pd.read_excel('....data/date_test.xlsx')
print(data_test)
#在原基础上不增新列,将total_bill改为object类型
data_test['card_t'] = data_test['card_t'].astype((str))

#需要改变的列
card_t_list = data_test['card_t']
#print(len(card_t_list))
#加密开始时间
time_start_enc = time.time()
#遍历替换
for i in range(len(card_t_list)):
    card = card_t_list[i]
    card = replace_str(card, 4, 10)     #这是核心的那一点,调用替换
    card = replace_str_1(card, 16,2)
    card_t_list[i] = card
time_end_enc = time.time()
print("加密耗时s:",time_end_enc-time_start_enc)
print(data_test)

# 导出为xls文件
data_test.to_excel('....data/date_test_success.xlsx', index=False)
'''
加密耗时s: 0.008274316787719727
'''

原文件:

脱敏后:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值