阐述
我们常常会遇到有关支付的问题,在支付的过程中,就会遇到支付安全性的问题,而有关于money的交易,安全措施做的再多也不为过,当然配置https服务那是必须的……
md5加密
使用md5
加密将参数和时间戳以及随机字符串拼接,按照字典序排序生成签名,放入头部传给后台;
那么问题来了?
#1. 为什么要拼接时间戳和随机字符串呢?
答:是为了防止被重放攻击;
#2. 按照字母序排序是为什么呢?
答: 防止参数乱序之后,造成加密不一致的问题;
1 | 安装依赖,也可以直接引入js库 |
crypto-js aes 解密
背景
返回的数据也涉及到敏感信息,所以对返回的数据也需要进行加密处理,最近做了一个解密的操作,用的是AES+BASE64
算法,网上对于这类的加密算法还是蛮多的,这里推荐一篇文章 AES加密算法的详细介绍与实现.
具体实现
搞懂了加密解密的实现是怎么一回事,已经成功了一大半,这里贴出一些核心代码,虽然代码量不多,但是做的过程是痛苦的,做出来之后在想想其实也没有那么复杂……这里推荐一篇文章帮助更好的理解AES. 理解AES加密解密的使用方法1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16安装依赖
npm install crypto-js
function decrypt(data) {
let key = CryptoJS.enc.Utf8.parse('key'); // 秘钥
let baseResult=CryptoJS.enc.Base64.parse(data);
let ciphertext=CryptoJS.enc.Base64.stringify(baseResult);
let decrypted = CryptoJS.AES.decrypt(ciphertext, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7,
});
data = decrypted.toString(CryptoJS.enc.Utf8).toString();
return data;
};
调用:在返回的数据直接调用该方法即可.
注意点
在做的过程中遇到一个问题,前台传入的参数为中文或者特殊字符时,在传输过程中会做一些编码,后台在接收的时候需要对其进行重新编码才能够正确的拿到参数…
结语
关于加解密的方法还有很多,感兴趣的小伙伴们可以继续做一些深入的研究哈~