赞
踩
目录
- //安装
- npm install crypto-js --save-dev
- import CryptoJS from 'crypto-js';
-
- export default {
- //随机生成指定数量的16进制key
- generatekey(num) {
- let library = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
- let key = "ABCDEF0123456789";
- for (var i = 0; i < num; i++) {
- let randomPoz = Math.floor(Math.random() * library.length);
- key += library.substring(randomPoz, randomPoz + 1);
- }
- return key;
- },
-
- //加密
- encrypt(word, keyStr) {
- keyStr = keyStr ? keyStr : 'ABCDEF0123456789'; //判断是否存在ksy,不存在就用定义好的key
- var key = CryptoJS.enc.Utf8.parse(keyStr);
- var srcs = CryptoJS.enc.Utf8.parse(word);
- var encrypted = CryptoJS.AES.encrypt(srcs, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 });
- return encrypted.toString();
- },
- //解密
- decrypt(word, keyStr) {
- keyStr = keyStr ? keyStr : 'ABCDEF0123456789';
- var key = CryptoJS.enc.Utf8.parse(keyStr);
- var decrypt = CryptoJS.AES.decrypt(word, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 });
- return CryptoJS.enc.Utf8.stringify(decrypt).toString();
- }
-
- }

import AES from "../tools/crypto";
-
- //链接参数为:http://www.baidu.com?idcard=11111111&name=测试&aa=11
- /*
- 第一步:开始加密以下字符串:idcard=11111111&name=测试
- */
- let str = "idcard=11111111&name=测试";
-
- var encrypts = AES.encrypt(str);
- // var encrypts = AES.encrypt(JSON.stringify(str));//json字符串
- console.log(encrypts);//AES(ECB)加密后:t8AAHi7+1sZSqpgWvxymARPpClXIshZCPcYBfMzugeQ=
- /*
- 第二步:对AES(ECB)加密后参数进行URLEncode:
- */
- let data= encodeURIComponent(encrypts)
- console.log(data);//t8AAHi7%2B1sZSqpgWvxymARPpClXIshZCPcYBfMzugeQ%3D
- /*
- 第三步:完整的url为:http://www.baidu.com?kdParam=t8AAHi7%2B1sZSqpgWvxymARPpClXIshZCPcYBfMzugeQ%3D
- */

- //URL地址:http://www.baidu.comkdParam=t8AAHi7%2B1sZSqpgWvxymARPpClXIshZCPcYBfMzugeQ%3D
- /*
- 第一步:获取url路径
- */
- let query = this.$route.query.kdParam;
- /*
- 第二步:对AES参数进行URLEncode解密:
- */
- let data = decodeURIComponent(query);
- console.log(data);//t8AAHi7+1sZSqpgWvxymARPpClXIshZCPcYBfMzugeQ=
- /*
- 第三步:AES解密
- */
- var dess = AES.decrypt(data);
- console.log(dess);//idcard=11111111&name=测试
- /*
- 第四步: 解构参数的值
- */
- var keyValue = dess.split("&");
- console.log(keyValue);//['idcard=11111111', 'name=测试']
- var obj = {};
- for (var i = 0; i < keyValue.length; i++) {
- var item = keyValue[i].split("=");
- var key = item[0];
- var value = item[1];
- obj[key] = value;
- }
- console.log(obj);//{idcard: '11111111', name: '测试'}

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。