网站被做镜像什么意思,黄冈seo推广软件的更新版本,福鼎网站建设培训,北京系统开发网站建设1、什么是加密以及解密#xff1f; 加密#xff1a;在网络上传输的原始数据#xff08;明文#xff09;经过加密后形成#xff08;密文#xff09;传输#xff0c;防止被窃取。
解密#xff1a;将加密还原成原始数据
2、加密方式分类#xff1f; 对称式加密#xf…1、什么是加密以及解密 加密在网络上传输的原始数据明文经过加密后形成密文传输防止被窃取。
解密将加密还原成原始数据
2、加密方式分类 对称式加密对加密和解密使用的是同一个密钥
非对称式加密非对称式加密需要两个密钥双钥分别叫公钥和秘钥这两把秘钥可以互相加解密公钥公开的不需要保密私钥是保密的。
01 加密方式详解
1、加对称密技术 DES加密算法加密安全性弱一般应用于旧的系统里面 AES加密算法一般用于前后端分离的接口加密 Base64加密算法编码的方式
2、非对称加密技术RSA加密算法 RSA加密算法最有影响力的加密算法
场景1通过公钥加密 通过私钥解密 两个用户。A和BB有双钥A想要把一个数据报文通过加密的方式传给B。
① B把自己的公钥发送给A公钥是公开的
② A使用这个公钥把数据报文进行加密加密完成传给B加密后的密文通过网络传给B
③ B使用自己的秘钥解密得到数据报文
场景2私钥加密数字签名 公钥解密验证签名 数字证书由来因为公钥是公开的不安全所以需要第三方的CA数字证书颁发机构对公钥进行加密加密后的东西就叫数字证书。数字证书包括B用户基本信息以及B公钥的信息部分证书也附有有效期。X509的标准 CA双钥通过私钥加密 验证签名身份验证。
两个用户。A和BB有双钥
① B把需要发送的数据报文通过私钥加密。
② B找到CA把自己的公钥做认证
③ CA就用自己的私钥对B的公钥和一些相关的信息一起加密生成数字证书
④ CA就会把数字证书发给B
⑤ B将密文和数字证书都传给A
⑥ A用CA的公钥去解开数字证书拿到B的公钥在使用公钥解密密文从而得到数据报文
Fiddler不能直接抓取https协议的数据报文需要安装一个数字证书 https协议http协议SSL安全传输协议
SSL安全传输协议安全套接层。
NetScapeB研发FiddlerACA把数字证书发到网上数字证书生成器。
3、MD5完全不考虑解密也叫做哈希算法散列算法 Postman举例在Tests中
//获得当前时间戳
new times new Date().getTime()
//使用MD5加密
var miwen
CryptoJS.MD5(“admin”).toString().toUpperCase()
Jmeter
函数助手__digest
${__digest(MD5.admin,)}
02 接口签名
1、什么是接口签名 使用用户名密码时间戳和所有的排序过的参数组合起来再加密得到的字符串字符串是唯一的有权访问第三方金融接口的鉴权码sign接口签名。
2、为什么要做接口签名 防伪装攻击 防篡改攻击 防存放攻击 防数据泄漏
3、如何做接口签名了解签名的规则 对所有的请求的参数按key按ASCII码做升序排列。
{“c”:“3”,“b”:“2”,“a”:“1”}
{“1”:“1”,“b”:“2”,“c”:“3”}
把参数名和参数值连接成字符串
a1b2c3
用申请到的appid和appsecret连接到字符串的头部
appid:用户名
appsecret密码
appidadminappsecret123a1b2c3
appidadminappsecret123a1b2c3timestamp124124252
然后再把这个字符串安装32位的MD5加密加密后再转换成大写。
signE48B34F95AE8001C99CB86A612538C04
10秒有效。
jmeter实现并且分装成函数的话自定义函数 jave python
4、postman实现并且封装成函数JavaScript Pre-request-Script
//urlhttps://aaa/sss?comaaanuhhhphonejjjjjshow_appidjjshowapi_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 自带的 全局变量
paramshowapi_timestamptime;
paramshowapi_sign122344556;var param param.split() ;//分割变成一个list
param.sort();//按照要求的方式进行排序a-z
var keys new Array(param.length);
var values new Array(param.length);
for(var i0;iparam.length;i)
{keys[i]param[i].split()[0]//取前面的值values[i]param[i].split()[1]//取后面的值
}
var str[]
for(var p0;pkeys.length;p)//如果发现keys需要sign就不参与验签
{if (keys[p]showapi_sign||values[p]{{time}}){continue;}str.push(keys[p]value[p]);
}
var sign str.join()
sign signsssss//加密钥
pm.environment.set(sign,CryptoJs.MD5(sign).toString());//postman 自带的全局变量}