一、什么是加密以及解密
1、加密:网络上传输的原始数据(明文)经过加密后会形成密文传输,防止被窃取
2、解密:将密文还原成原始数据
二、加密方式分类
1、对称式加密:对加密和解密使用同一个密钥
2、非对称式加密:非对称式加密需要两个密钥(双钥),分别叫公钥和私钥,可以相互加解密。
公钥公开的,不需要保密,私钥需要保密
三、加密方式
1、对称加密技术:
DES加密算法
AES加密算法
Base64加密算法
2、非对称加密技术:
RSA加密算法:
场景1:公钥加密,私钥解密
场景2:私钥加密:数字签名;公钥解密:验证签名
数字证书由来:因为公钥是公开的不安全,所以需要第三方得CA(数字证书颁发机构)对公钥进行加密,加密后的东西叫做数字证书。
数字证书包括:B用户的基本信息、B公钥的信息、有效期;X509的标准。
CA:双钥,以通过私钥加密
验证签名:身份验证
Fiddler不能直接抓取https协议的数据报文?
需要安装一个数字证书
https = http+ssl安全传输协议
ssl安全传输协议:安全套接层,NetScape研发。
3、MD5:只加密不解密,也叫哈希算法,散列算法
postman:
var miwen = CryptoJS.MD5(xxx).toString().toUPPERCase()
jmeter:
${__digest(MD5,XXX,,,)}
四、接口签名sign原理
1、什么是接口签名?
使用用户名,密码,时间戳和所有的排过序之后的参数组合起来,在机密的得到的字符串。字符串是唯一的有权限访问第三方金融接口的鉴权码。 ==sign
2、为什么需要接口签名?
1)传统方式没办法满足安全性,防数据泄露
2)防伪装攻击
3)防篡改攻击
4)防重放攻击
3、如何做接口签名,了解签名规则:
1)对所有的请求参数的key按照ASCII码做升序排列
{"c":"3","b":"2","a":"1"} --->{"a":"1","b":"2","c":"3"}
2)把参数的名称和参数值连接成字符串
a=1&b=2&c=3
3)用申请到的appid和appsecret连接到字符串的头部
appid:用户名
appsecret:密码
appid=xxx&appsecret=xxxx&a=1&b=2&c=3
4)用时间戳连接到字符串尾部
appid=xxx&appsecret=xxxx&a=1&b=2&c=3×tamp=121221211
5)把这个字符串安装32位的MD5加密,加密后转化为大写