前言
公司有些接口的入参存在sign鉴权验证,但是这个验证的逻辑,如果开发不给你写工具,那么就没法去做接口验证了,所以这时,就需要自己写一个sign值加密的小工具(前提是需要向对应的开发人员要一下加密的逻辑),以此为背景,我研究了一下,自己大概写了一个demo,后面有需要的话,可以改下加密的逻辑,直接使用了。
代码
我写的这个demo,是入参经过排序,再和自定义的keyString进行拼接,然后用md5加密,这个加密逻辑要根据实际接口对应的加密逻辑来设计,我这里只是举个例子
拼接
import hashlib
import json
keyString="192006250b4c09247ec02edce69f6a2d"
while True:
data01=input("请输入入参:\n")
# print(type(data01))
# 为了将输入的str转为字典dict类型
dic01 = json.loads(data01)
# print(dic01)
print(type(dic01))
list=[]
stringA=""
# 将字典中的值依次取出,放到列表中
for key in dic01.keys():
list.append(key)
# 对列表的对象进行排序,默认升序,即按照ASCII码从小到大排序
list.sort()
# 将排序后的列表中的每个值拼接
for i in list:
stringA += i + "=" + dic01[i] + "&"
# 参数拼接成需要加密的字符串
stringA += "key" + "=" + keyString
print("拼接后的加密字符串为:"+stringA+"\n")
# 创建对象md
md = hashlib.md5()
# 对stringA字符串进行编码
md.update(stringA.encode('utf-8'))
# 数据加密
signValue = md.hexdigest()
# 把加密的结果,小写转换成大写,upper函数
signValue = signValue.upper()
# 打印结果
print("加密后的sign值为:"+signValue+"\n")
最终实现效果
代码写完后,将py文件打包成exe文件(这个过程自己百度一下,或者看我其他的文章),双击exe文件,效果如下(别忘了电脑上装python)
总结
这里输入的待加密的入参,是不带sign空值的,因为如果带sign入参的话,还要代码里去重sign这个入参(偷个懒,哈哈),然后就是,根据实际的加密场景,改下代码逻辑就可以了,后面如果写的小工具多了,可以再写个前台集成到一起。