性能测试全栈笔记:17.timestap时间戳/加密/digest签名效验函数讲解
性能测试全栈笔记
十七、timestap时间戳/加密/digest签名效验函数讲解
引导:现在大部分系统做接口加密的很多,特别是登录接口这块,做的尤为突出,如何应对这类接口的请求,需要了解时间戳的概念和相关函数的使用。
举例说明:
- 协议:HTTP
- IP:192.168.25.152
- 端口:808
接口名称 | 接口类型 | URL | 参数 |
---|---|---|---|
需要签名验证的POST接口 | POST | /pinter/com/userInfo | {“phoneNum”:”123434″,”optCode”:”testfan”,”timestamp”:”12112121212″,”sign”:”your sign data”} |
运行一下单接口:
很明显,结果有误!提示时间戳及签名有误。
下面开始设置时间戳:
1.函数助手找到time函数
设置变量名:myTimeParam(小驼峰写法)
点击生成:${__time(,myTimeParam)}
,出现:1640244000472
看不懂?
进入:时间戳转换工具
注意:转换的时候,后面三位去掉!
上图得知,已经转换成了我们想要的实际时间,原来,这就是时间戳。
2.接着,将原来timestap的值12112121212更改为${__time(,myTimeParam)}
3.接着再来设置sign(签名效验)
已知,为MD5加密,函数助手中寻找digest函数,并进行设置
算法摘要里不知道填写什么,可以咨询开发或相关文档
另外要注意,digest支持的加密方式:MD5/MD2/SHA等,可以通过digest旁边的帮助获得
4.最后将${__digest(MD5,123456,,,)}替换掉原来sign的值,并且将phoneNum、optCode、timestamp进行拼接
"sign":"${__digest(MD5,${userName}${optCode}${myTimeParam},,,)}"
注意:sign由什么字段拼接,由开发文档决定。
5.运行脚本,察看结果数:
6.我们再看一下请求:
入参里我加入了参数化的元素,调用了事先设置好的CSV文件
7.再通过调试取样器验证一下:
验证正确,时间戳函数介绍到这里,更多的函数知识等待大家发掘、应用。
下一章预告:Jmeter关联相关知识(重中之重)