最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

接口測試必備技能 - 加密和簽名

2023-03-02 09:35 作者:碼同學軟件測試  | 我要投稿

每天進步一點點,關注我們哦,每天分享測試技術文章

本文章出自【碼同學軟件測試】

碼同學公眾號:自動化軟件測試,領取資料可加:magetest

碼同學抖音號:小碼哥聊軟件測試

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

加密:在網(wǎng)絡上傳輸?shù)脑紨?shù)據(jù)(明文)經(jīng)過加密后形成(密文)傳輸,防止被竊取。

解密:將加密還原成原始數(shù)據(jù)


2、加密方式分類?

對稱式加密:對加密和解密使用的是同一個密鑰

非對稱式加密:非對稱式加密需要兩個密鑰(雙鑰),分別叫公鑰和秘鑰,這兩把秘鑰可以互相加解密,公鑰公開的,不需要保密,私鑰是保密的。



01加密方式詳解

1、加對稱密技術:

  • DES加密算法:加密安全性弱,一般應用于舊的系統(tǒng)里面

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

  • Base64加密算法:編碼的方式


2、非對稱加密技術(RSA加密算法)

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


場景1:通過公鑰加密

? ? ? ? ? ?通過私鑰解密

兩個用戶。A和B,B有雙鑰,A想要把一個數(shù)據(jù)報文通過加密的方式傳給B。

① B把自己的公鑰發(fā)送給A(公鑰是公開的)

② A使用這個公鑰把數(shù)據(jù)報文進行加密,加密完成傳給B(加密后的密文通過網(wǎng)絡傳給B)

③ B使用自己的秘鑰解密得到數(shù)據(jù)報文

場景2:私鑰加密:數(shù)字簽名

? ? ? ? ? ?公鑰解密:驗證簽名

  • 數(shù)字證書由來:因為公鑰是公開的不安全,所以需要第三方的CA(數(shù)字證書頒發(fā)機構)對公鑰進行加密,加密后的東西就叫數(shù)字證書。數(shù)字證書包括:B用戶基本信息以及B公鑰的信息,部分證書也附有有效期。X509的標準

  • CA:雙鑰,通過私鑰加密

  • 驗證簽名:身份驗證。


兩個用戶。A和B,B有雙鑰

① B把需要發(fā)送的數(shù)據(jù)報文通過私鑰加密。

② B找到CA把自己的公鑰做認證

③ CA就用自己的私鑰對B的公鑰和一些相關的信息一起加密,生成數(shù)字證書

④ CA就會把數(shù)字證書發(fā)給B

⑤ B將密文和數(shù)字證書都傳給A

⑥ A用CA的公鑰去解開數(shù)字證書,拿到B的公鑰,在使用公鑰解密密文,從而得到數(shù)據(jù)報文


Fiddler不能直接抓取https協(xié)議的數(shù)據(jù)報文,需要安裝一個數(shù)字證書

https協(xié)議=http協(xié)議+SSL安全傳輸協(xié)議

SSL安全傳輸協(xié)議:安全套接層。

NetScape(B)研發(fā),F(xiàn)iddler(A),CA把數(shù)字證書發(fā)到網(wǎng)上,數(shù)字證書生成器。


3、MD5(完全不考慮解密,也叫做哈希算法,散列算法)

Postman舉例:在Tests中

//獲得當前時間戳

new times = new Date().getTime()

//使用MD5加密

var miwen?=

CryptoJS.MD5("admin").toString().toUpperCase()

Jmeter

函數(shù)助手:__digest

${__digest(MD5.admin,,,)}

免費領取碼同學軟件測試課程筆記+超多學習資料+完整視頻+面試題,可加微信:magetest


02接口簽名

1、什么是接口簽名?

使用用戶名,密碼,時間戳和所有的排序過的參數(shù)組合起來,再加密得到的字符串,字符串是唯一的有權訪問第三方金融接口的鑒權碼=sign接口簽名。


2、為什么要做接口簽名?

  • 防偽裝攻擊

  • 防篡改攻擊

  • 防存放攻擊

  • 防數(shù)據(jù)泄漏


3、如何做接口簽名,了解簽名的規(guī)則:

對所有的請求的參數(shù)按key按ASCII碼做升序排列。

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

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

把參數(shù)名和參數(shù)值連接成字符串:

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加密,加密后再轉(zhuǎn)換成大寫。

sign=E48B34F95AE8001C99CB86A612538C04

10秒有效。

jmeter實現(xiàn)并且分裝成函數(shù)的話:自定義函數(shù) jave python


4、postman實現(xiàn)并且封裝成函數(shù):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++)//如果發(fā)現(xiàn)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 自帶的全局變量}


免費領取碼同學軟件測試課程筆記+超多學習資料+學習完整視頻 ? 可加:magetest/關注碼同學公眾號:自動化軟件測試

本文著作權歸作者所有,任何形式的轉(zhuǎn)載都請聯(lián)系作者獲得授權并注明出處。


接口測試必備技能 - 加密和簽名的評論 (共 條)

分享到微博請遵守國家法律
平湖市| 隆安县| 无锡市| 阿城市| 福安市| 黔西县| 额济纳旗| 昌平区| 遂平县| 沙田区| 千阳县| 渭南市| 昂仁县| 武强县| 德安县| 镇康县| 论坛| 平远县| 叶城县| 怀远县| 浑源县| 灵山县| 桐庐县| 南投县| 伊吾县| 财经| 玉林市| 乌拉特前旗| 孝感市| 清涧县| 阳信县| 泰安市| 永寿县| 米脂县| 曲松县| 长宁区| 岑溪市| 河西区| 漳平市| 闵行区| 馆陶县|