sign python_python实现sign签名
sign签名是用于提供给外部(第三方)调用的接口,调用方需要提供正确的appkey钥匙才能调用,确保了接口的安全性。
签名参数sign生成方法:
假设有请求参数如下:
appkey = "111222333"
body = {
"username": "Test",
"Password": "123456",
"mail": "",
"sign": "xxx"
}
第一步:将所有参数(注意是所有参数),除去sign本身,以及值为空的参数,转化为键值对,没有等于号的字符串。
期望的结果如下:
["usernameTest","Password123456"]
代码实现2种方式:
1:for循环实现:
list =[]for i inbody.items():if i[1] != "" and i[0] != "sign":
list.append("".join(i))print(list)
2:列表生成式实现:
s = ["".join(i) for i in body.items() if i[1] != "" and i[0] != "sign"]print(s)
2种方式打印出来的实际结果如下:
第二步:排序后的参数按照参数1值1,参数2值2的键值对顺序拼接成一个字符串,按参数名字母顺序升序排序。(具体升降顺序得问开发,一般为升序)
期望的结果如下:(按字母顺序:Password开头的在username前面)
“Password123456usernameTest”代码实现:
#TODO 按字母升序排序
sort = "".join(sorted(list))print(sort)
实际结果:
第三步:在前面得到的字符串后面,加上接入方验证密匙appkey。
期望结果:
Password123456usernameTest111222333
代码实现:
#todo 3:在第二步得到的字符串后面,加上接入方验证密匙key,然后计算md5值,
result = sort+appkeyprint(result)
实际结果:
第四步:然后将这个字符串换为小写进行md5加密计算,得到的这个值即为sign签名值。
注意,计算md5之前请确保接口与接入方的字符串编码一致,如统一使用utf-8编码或者GBK编码,如果编码方式不一致则计算出来的签名会校验失败。
代码实现:
#todo MD5加密,固定的写法
defjiami(params):
m=hashlib.md5()
m.update(params.encode("utf-8"))returnm.hexdigest()
sign= jiami(result.lower()) #lower()把字符转为小写
print(sign)
实际结果:
全部过程如下:
‘‘‘sign签名主要是用于提供给外部(第三方)调用的接口,需要提供appkey钥匙才能调用‘‘‘
importhashlib
appkey= "111222333"body={"username": "Test","Password": "123456","mail": "","sign": "xxx"}#todo 第1步: 将所有参数(注意是所有参数),除去sign本身,以及值是空的参数,转化为键值对的
#s = ["".join(i) for i in body.items() if i[1] != "" and i[0] != "sign"]#print(s)
list=[]for i inbody.items():if i[1] != "" and i[0] != "sign":
list.append("".join(i))print(list)#todo 2:排序后的参数按照参数1值1,参数2值2的键值对顺序拼接成一个字符串,按参数名字母升序排序#TODO 按字母升序排序
sort = "".join(sorted(list))print(sort)#todo 3:在第二步得到的字符串后面,加上接入方验证密匙key,然后计算md5值,
result = sort+appkeyprint(result)#todo MD5加密,固定的写法
defjiami(params):
m=hashlib.md5()
m.update(params.encode("utf-8"))returnm.hexdigest()
sign= jiami(result.lower()) #lower()把字符转为小写
print(sign)
sign python_python实现sign签名相关推荐
- php+rsa生成签名sign,PHP 做 RSA 签名 生成订单(支付宝例子)
/组合签名 $a=time(); $b=substr($a, 1); //生成随机订单号 $orderid= $b.mt_rand(10000,99999); //合作身份者id,以2088开头的16 ...
- PAT甲级1006 Sign In and Sign Out:[C++题解]字符串处理
文章目录 题目分析 题目链接 题目分析 读入三个字符串. 需要记录最早开门的人的id和时间,最晚离开的人的id和时间. 本题的简单之处在于 时间的位数都相同,比如 10点和01点.因此这样的时间大小比 ...
- Sign In and Sign Out
1006. Sign In and Sign Out (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue ...
- 1006. Sign In and Sign Out (25)
1006. Sign In and Sign Out (25) 问题描述: At the beginning of every day, the first person who signs in t ...
- [Java] 1006. Sign In and Sign Out (25)-PAT甲级
1006. Sign In and Sign Out (25) At the beginning of every day, the first person who signs in the com ...
- 【PAT甲】1006 Sign In and Sign Out (25分)循环模拟
problem 1006 Sign In and Sign Out (25分) At the beginning of every day, the first person who signs in ...
- [sign in和sign up哪个是注册?哪个是登入?]
sign in和sign up的意思: 如果是网站的话sign up是注册,sign in是登录的意思,另外,sign out退出
- (翻译)‘Sign Up’ 和‘Sign In’按钮让用户混淆的原因
你能多快看出"Sign Up(PS:注册)"和"Sign In(PS:登录)"的区别?将它们作为按钮名称同时使用,会让用户点错按钮.出现上述问题并不是用户的 ...
- sign python_python机器学习
1.os库 2.pandas 2.1字典生成pandas 2.2字典生成pandas并序列化数据 3 .split 3.1 strip() 4.numpy 4.1 numpy.tile 4.2 num ...
最新文章
- 拦截器获取不到sesssion作用域的值_ES6--块级作用域
- Java数字包装类基本程序,Java基本数据类型包装类
- 算法提高课-搜索-双向广搜 AcWing 190. 字串变换:bfs、双向bfs、queue和unordered_map
- ngnix的upstream模块配置详解
- Exceptionless(二) - 使用进阶
- linux头文件 库,Linux操作系统的头文件和库文件搜索路径
- php 静态页面模板类,dedetag.class.php 静态模板类
- 发布你的程序包到Nuget
- Some Knowledge
- Linux内核启动:setup_arch
- 如何编译 opencv3 和 opencv_contrib(Linux)
- 开源中国iOS客户端学习——(七)MBProgressHUD特效
- 传智播客 C/C++学习笔记 数组和指针的关系, 字符串学习
- 按群计数10以内_10米12米60吨地磅扬州地磅数字地磅厂-鹰衡称重
- STM32F103红外遥控
- IntelliJ IDEA汉化解决方案教程
- realtek高清晰音频管理器没有设备高级设置怎么设置音箱与耳机同时响
- 小程序嵌套h5页面_小程序内嵌H5的方法介绍
- Android性能优化—— 黑白屏启动优化
- 业内首发 | 区块链数据服务 - BDS
热门文章
- SAP ECC 6.0有哪些增强功能
- F110报错:Company codes **/** do not appear in proposal ***; correct
- PP后台配置-定义工作中心标准值
- SAP实施项目中顾问与客户的有效沟通
- 操作系统都是用c语言写的吗,用C语言写关于操作系统的一个问题。
- 读取word对应页码_毕业论文怎样自动生成目录及从任意页开始排页码
- c语言中式如何定义变量,“新中式”住宅该怎样定义?这场跨界对话给你看建发的答案...
- CTF-杂项之工具使用汇总(一)
- java 安装报错2503_Windows安装Node.js报错:2503、2502的解决方法
- python计算文件md5值