最近做接口测试,遇到比较麻烦的接口
1、某一字段要将【文件进行MD5加密】传入
2、某一字段要将【字符串加密并转化为16位数据】传入
3、某一字段要将【图片转化为Base64】传入
好在网上东拼西凑找了很多方法总算是解决了【嘻嘻】
开篇文章备忘+分享一下代码 ,可以全代码复制直接替换即可使用哦
解决问题使用到的三种MD5加密+Base64编码
一、简单的MD5加密【打印结果为32位小写数据】
'''先导入 MD5 加密模块'''
from hashlib import md5
'''params 传入需要加密的参数【整段代码复制,只需要修改params参数值即可】'''
params = "044695"
def Md5(params):
m = md5()
m.update(params.encode('utf8'))
sign1 = m.hexdigest()
return sign1
print(MD5(params))
二、特殊需求的MD5加密【四种数据返回】
'''先导入加密所需模块'''
import hashlib
# params 传入需要加密的参数【整段代码复制,只需要修改params参数值即可】
params = "123456"
def md5value(params):
input_name = hashlib.md5()
input_name.update(params.encode("utf-8"))
print("大写的32位:" + (input_name.hexdigest()).upper())
print("大写的16位:" + (input_name.hexdigest())[8:-8].upper())
print("小写的32位:" + (input_name.hexdigest()).lower())
print("小写的16位:" + (input_name.hexdigest())[8:-8].lower())
md5value(params)
'''以下为打印结果,选择需要的格式即可'''
'''
大写的32位:E10ADC3949BA59ABBE56E057F20F883E
大写的16位:49BA59ABBE56E057
小写的32位:e10adc3949ba59abbe56e057f20f883e
小写的16位:49ba59abbe56e057
'''
三、将文件进行MD5加密【四种数据返回】
'''先导入加密所需模块'''
from hashlib import md5
'''定义一个文件加密方法【注:调用需要传入文件路径】'''
def md5_file(name):
m = md5()
file_name = open(name, 'rb') #需要使用二进制格式读取文件内容
m.update(a_file.read())
file_name .close()
'''下面的返回数据根据自己需要进行注释/反注释即可'''
return m.hexdigest().upper() # 大写的32位
# return m.hexdigest()[8:-8].upper() # 大写的16位
# return m.hexdigest().lower() # 小写的32位
# return m.hexdigest()[8:-8].lower() # 小写的16位
# 这个方法作为本地调试,调用不会被打印
if __name__ == '__main__':
res = md5_file(r'D:\桌面\timg.jpg')
print(res)
四、文件转化Base64编码
'''先导入加密所需模块'''
import base64
# 使用变量名存储文件路径
file_name = r"D:\test.jpg"
with open(file_name , 'rb') as f:
base64_data = base64.b64encode(f.read())
res = base64_data.decode()
'''打印Base64编码结果'''
print(res)