码者最近在编写接口自动化测试项目中发现一种叫des的加密格式。场景是:登录成功之后会返回一个key,和一个id(加密的),需要把这个id解密出来,给下一个接口请求头。之前做的自动化都是拿过来直接用,不需要解密。遇到这个问题记录一下。
一、导入库
pip install pyDes
二、这是封装好的代码
"""
@FileName: deshandle.py
@Author: 公众号:《测试小白从零开始》 简书作者:sai德很黑
@time: 2021/4/30
"""
from pyDes import des,ECB,PAD_PKCS5
import binascii
"""
DES加密、解密
"""
class DesHandle:
def __init__(self,text):
self.text=text
self.KEY='123456' # 这个key是固定问开发,
def des_encrypt(self):
"""
DES 加密
:param s: 原始字符串
:return: 加密后字符串,16进制
"""
secret_key = self.KEY # 密码
iv = secret_key # 偏移
# secret_key:加密密钥,CBC:加密模式,iv:偏移, padmode:填充
des_obj = des(secret_key, ECB, iv, pad=None, padmode=PAD_PKCS5)
# 返回为字节
secret_bytes = des_obj.encrypt(self.text, padmode=PAD_PKCS5)
# 返回为16进制
return binascii.b2a_hex(secret_bytes)
def des_descrypt(self):
"""
DES 解密
:param s: 加密后的字符串,16进制
:return: 解密后的字符串
"""
secret_key = self.KEY
iv = secret_key
des_obj = des(secret_key, ECB, iv, pad=None, padmode=PAD_PKCS5)
decrypt_str = des_obj.decrypt(binascii.a2b_hex(self.text), padmode=PAD_PKCS5)
return bytes.decode(decrypt_str) #bytes.decode() 将bit转为str
四、验证
点这里验证:在线加密解密des
持续学习中。。。。