接口测试必备技能 - 加密和签名

文章介绍了加密的基本概念,包括对称式加密如DES和AES,非对称式加密如RSA算法,并详细讲解了如何使用RSA进行数据传输。此外,还阐述了接口签名的规则,确保接口的安全性,提供了使用JMeter和POSTMAN实现签名的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

每天进步一点点,关注我们哦,每天分享测试技术文章

1、什么是加密以及解密?

加密:在网络上传输的原始数据(明文)经过加密后形成(密文)传输,防止被窃取。

解密:将加密还原成原始数据

2、加密方式分类?

对称式加密:对加密和解密使用的是同一个密钥

非对称式加密:非对称式加密需要两个密钥(双钥),分别叫公钥和秘钥,这两把秘钥可以互相加解密,公钥公开的,不需要保密,私钥是保密的。

01加密方式详解

1、加对称密技术:

  • DES加密算法:加密安全性弱,一般应用于旧的系统里面

  • AES加密算法:一般用于前后端分离的接口加密

  • Base64加密算法:编码的方式

2、非对称加密技术(RSA加密算法)

RSA加密算法:最有影响力的加密算法

场景1:通过公钥加密

           通过私钥解密

两个用户。A和B,B有双钥,A想要把一个数据报文通过加密的方式传给B。

① B把自己的公钥发送给A(公钥是公开的)

② A使用这个公钥把数据报文进行加密,加密完成传给B(加密后的密文通过网络传给B)

③ B使用自己的秘钥解密得到数据报文

3、如何做接口签名,了解签名的规则:

对所有的请求的参数按key按ASCII码做升序排列。

{"c":"3","b":"2","a":"1"}

{"1":"1","b":"2","c":"3"}

把参数名和参数值连接成字符串:

a=1&b=2&c=3

用申请到的appid和appsecret连接到字符串的头部

appid:用户名

appsecret密码

appid=admin&appsecret=123&a=1&b=2&c=3

用时间戳连接字符串的尾部

appid=admin&appsecret=123&a=1&b=2&c=3&timestamp=124124252

然后再把这个字符串安装32位的MD5加密,加密后再转换成大写。

sign=E48B34F95AE8001C99CB86A612538C04

10秒有效。

jmeter实现并且分装成函数的话:自定义函数 jave python

4、postman实现并且封装成函数:JavaScript

Pre-request-Script

//url=https://aaa/sss?com=aaa&nu=hhh&phone=jjjjj&show_appid=jj&showapi_timestamp={{time}}&showapi_sign={{sign}}

var moment require('moment')//获取时间戳

console.log(request.url);//获取请求信息

var url request.url;

var param url.split("?")[1]//取到url的?后面的值,按照?分割,取前面就是0

if(param != null)

{
   

{
   
var time moment().format("YYYYMMDDHHmmss")//取当天时间按照YYYYMMDDHHmmss形式显示
   pm.environment.set("time",time);//postman 自带的  全局变量


   param+="&showapi_timestamp="+time;
   
param+="&showapi_sign=122344556";
   

   
var param param.split("&") ;//分割变成一个list
   param.sort();//按照要求的方式进行排序a-z
   
var keys new Array(param.length);
   
var values new Array(param.length);
   
for(var i=0;i<param.length;i++)
   {
       
keys[i]=param[i].split("=")[0]//取=前面的值
       values[i]=param[i].split("=")[1]//取=后面的值
   }
   
var str=[]
   
for(var p=0;p<keys.length;p++)//如果发现keys需要sign,就不参与验签
   {
       
if (keys[p]=="showapi_sign"||values[p]=="{{time}}")
       {
           
continue;
       }
       
str.push(keys[p]+value[p]);
   }
   
var sign str.join("")
   sign = 
sign+"sssss";//加密钥
   pm.environment.set("sign",CryptoJs.MD5(sign).toString());//postman 自带的全局变量}

**最后:下方这份完整的【软件测试】视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取 【保证100%免费】**

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值