静态
This commit is contained in:
@@ -0,0 +1,143 @@
|
||||
/**
|
||||
* date:2019-10-17
|
||||
* author: lien
|
||||
* desc: import StringEncrypt from '文件路径'; StringEncrypt.toEncrypt(this.data.dd,'xmfish')
|
||||
*/
|
||||
import md5 from '../lib/md5'
|
||||
import Config from '../config'
|
||||
|
||||
/**
|
||||
* utf-8加密
|
||||
*/
|
||||
function encodeUtf8(text) {
|
||||
const code = encodeURIComponent(text);
|
||||
const bytes = [];
|
||||
for (var i = 0; i < code.length; i++) {
|
||||
const c = code.charAt(i);
|
||||
if (c === '%') {
|
||||
const hex = code.charAt(i + 1) + code.charAt(i + 2);
|
||||
const hexVal = parseInt(hex, 16);
|
||||
bytes.push(hexVal);
|
||||
i += 2;
|
||||
} else bytes.push(c.charCodeAt(0));
|
||||
}
|
||||
return bytes;
|
||||
}
|
||||
|
||||
/**
|
||||
* utf-8解密
|
||||
*/
|
||||
function decodeUtf8(bytes) {
|
||||
var encoded = "";
|
||||
for (var i = 0; i < bytes.length; i++) {
|
||||
encoded += '%' + bytes[i].toString(16);
|
||||
}
|
||||
return decodeURIComponent(encoded);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 生成从minNum到maxNum的随机数
|
||||
*/
|
||||
function randomNum(minNum, maxNum) {
|
||||
switch (arguments.length) {
|
||||
case 1:
|
||||
return parseInt(Math.random() * minNum + 1, 10);
|
||||
break;
|
||||
case 2:
|
||||
return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10);
|
||||
break;
|
||||
default:
|
||||
return 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 随机加密串
|
||||
*/
|
||||
function randomString(len) {
|
||||
len = len || 32;
|
||||
let $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678'; /****默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1****/
|
||||
let maxPos = $chars.length;
|
||||
let pwd = '';
|
||||
let newLen = randomNum(10, len)
|
||||
|
||||
for (let i = 0; i < newLen; i++) {
|
||||
pwd += $chars.charAt(Math.floor(Math.random() * maxPos));
|
||||
}
|
||||
return pwd;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取数据
|
||||
*/
|
||||
let getData = (DATA) => {
|
||||
return DATA
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除空值
|
||||
*/
|
||||
let delEmptyValue = (DATA) => {
|
||||
let data = getData(DATA)
|
||||
let newData = {}
|
||||
for (let i in data) {
|
||||
if (data[i] !== '' && Object.prototype.toString.call(data[i]) != "[object Array]" && Object.prototype.toString.call(data[i]) != "[object Object]") {
|
||||
newData[i] = data[i]
|
||||
}
|
||||
}
|
||||
return newData
|
||||
}
|
||||
|
||||
/**
|
||||
* 按ascii码从小到大排序
|
||||
*/
|
||||
let sortByAscii = (DATA) => {
|
||||
let obj = {
|
||||
...delEmptyValue(DATA)
|
||||
}
|
||||
let arr = new Array();
|
||||
let num = 0;
|
||||
for (let i in obj) {
|
||||
arr[num] = i;
|
||||
num++;
|
||||
}
|
||||
let sortArr = arr.sort();
|
||||
//let sortObj = {}; //完成排序值
|
||||
let str = ''; //自定义排序字符串
|
||||
for (let i in sortArr) {
|
||||
str += sortArr[i] + '=' + obj[sortArr[i]] + '&';
|
||||
//sortObj[sortArr[i]] = obj[sortArr[i]];
|
||||
}
|
||||
//去除两侧字符串
|
||||
let char = '&'
|
||||
str = str.replace(new RegExp('^\\' + char + '+|\\' + char + '+$', 'g'), '');
|
||||
|
||||
return str
|
||||
//return sortObj
|
||||
}
|
||||
|
||||
/**
|
||||
* 拼接字符串
|
||||
*/
|
||||
let combineUrl = (DATA) => {
|
||||
let data = sortByAscii(DATA)
|
||||
let str = data + '&key=' + Config.key
|
||||
// console.log("发送的字符串:"+str)
|
||||
return str
|
||||
}
|
||||
|
||||
/**
|
||||
* 加密字符串
|
||||
*/
|
||||
let toEncrypt = (DATA) => {
|
||||
// let secretKey = randomString()
|
||||
let data = combineUrl(DATA)
|
||||
return md5.hex_md5(data);
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
toEncrypt,
|
||||
randomString
|
||||
}
|
||||
Reference in New Issue
Block a user