本文可以学习到以下内容:

  1. 使用 pandas 中的 to_excel 生成 excel 数据
  2. 使用 pandas 中的 read_excel 读取 excel数据
  3. 使用 pandas 中的 map 函数加密手机号的身份证号
  4. 使用 hashlib 库对数据进行 md5、sha加密

获取数据

数据保存在 sqlite3 数据库中,用户表 users 中保存的数据有:用户id(user_id)、用户姓名(username)、用户年龄(age)、用户手机号(mobile)以及用户身份证(idcard)。

小凡通过下面代码获取数据库中的数据:

import os
import pandas as pd
import numpy as np
from sqlalchemy import create_engine # 数据库地址:数据库放在上一级目录下
db_path = os.path.join(os.path.dirname(os.getcwd()), "data.db")
engine_path = "sqlite:///" + db_path
# 创建数据库引擎
engine = create_engine(engine_path) sql = """
select
*
from
users
""" df = pd.read_sql(sql, engine) # 生成excel文件
df.to_excel("./md5加密数据.xlsx",index=False)
# 读取生成的Excel文件
md5_excel_df = pd.read_excel("./md5加密数据.xlsx")

数据预览:

加密函数

在对接不同的第三方公司,需要的加密方式也不同,小凡为了节省时间,将常用的加密方式封装为函数(encryption_str)。

函数需要传入以下参数:加密的字符串(string)、加密算法(encry_model)、加密类型(encry_style),该函数返回加密后的字符串。

加密函数如下:

def encryption_str(string, encry_model="md5_32", encry_style=True):
import hashlib
# 加密为 utf-8 编码
utf_8_str = str(string).encode("utf8")
# 函数字典
param_dict = {
"md5_32": hashlib.md5(utf_8_str),
"md5_16": hashlib.md5(utf_8_str),
"sha1": hashlib.sha1(utf_8_str),
"sha224": hashlib.sha224(utf_8_str),
"sha256": hashlib.sha256(utf_8_str),
"sha512": hashlib.sha512(utf_8_str)
}
encry_result = param_dict[encry_model].hexdigest()
if encry_model == 'md5_16':
encry_result = encry_result[8:-8]
# 返回结果
return encry_result if encry_style == "小写" else encry_result.upper()

数据加密

使用 pandas 中的map方法对手机号(mobile)和身份证号(idcard)列进行加密。

md5_excel_df["mobile_md5"] = md5_excel_df["mobile"].map(lambda x:encryption_str(x))
md5_excel_df["idcard_md5"] = md5_excel_df["idcard"].map(lambda x:encryption_str(x,"md5_16","大写"))

数据加密结果如下:

结尾

使用 pandas中的to_excel方法将加密后的数据保存到Excel中,代码如下:

md5_excel_df.to_excel("./md5加密数据已完成.xlsx",index=False)

源码地址

链接:https://pan.baidu.com/s/1rySQlwUvNkVC89qHcvbiRQ?pwd=xuyt
提取码:xuyt

最新文章

  1. STM32F105解密STM32F105VB芯片解密STM32F105R8单片机破解多少钱?
  2. 16~25.spring+hibernate简单实例 .连接数据库并进行增删改查
  3. CSS3_loading效果
  4. css3动画在动作结束时保持该状态不变的解决办法
  5. 重构13-Extract Method Object(提取方法对象)
  6. tomcat 默认项目设置
  7. JDK和JRE的区别?
  8. cf D. Valera and Fools
  9. 配置Kestrel 网址Urls
  10. jdk版本相关问题
  11. JS文件写法操作,DOM基本操作
  12. hdoj3138
  13. VueJs学习笔记
  14. Win10手记-为应用集成SQLite(二)
  15. Java入门第一章知识点总结
  16. c++对c的加强
  17. sersync+rsync实现服务器文件实时同步
  18. Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/tx]
  19. highcharts图表组件通过设置tooltip属性自定义数据提示信息
  20. 原创:微信小程序+WEB使用JS实现注册【60s】倒计时功能

热门文章

  1. JSP第八次作业
  2. KingbaseES libstdc++.so.6/ version 'CXXABI_1.3.8'问题处理
  3. js实现替换对象(json)格式的键名
  4. 安卓逆向 HOOK 第一课 XP的安装以及编写
  5. mapreduce的使用
  6. Commons-Collections反序列化
  7. 慧销平台ThreadPoolExecutor内存泄漏分析
  8. Angular UI库
  9. python ( 进阶 第一部 )
  10. Neighborhood Attention Transformer概述