134 lines
3.8 KiB
JavaScript
134 lines
3.8 KiB
JavaScript
|
|
"use strict";
|
||
|
|
cc._RF.push(module, 'c8f5flhBAxC46hd+DzswCq9', 'cryptoHelper');
|
||
|
|
// Scripts/nx/deps/cryptoHelper.js
|
||
|
|
|
||
|
|
"use strict";
|
||
|
|
|
||
|
|
var CryptoJS = require("crypto");
|
||
|
|
var s_key = null;
|
||
|
|
var CCryptoHelp = {
|
||
|
|
_getKey: function _getKey() {
|
||
|
|
if (!s_key) {
|
||
|
|
s_key = CryptoJS.enc.Utf8.parse("#KLDf*#!32!~kle1");
|
||
|
|
}
|
||
|
|
return s_key;
|
||
|
|
},
|
||
|
|
// AES加密
|
||
|
|
encrypt: function encrypt(str) {
|
||
|
|
if (!str || 0 === str.length) {
|
||
|
|
return "";
|
||
|
|
}
|
||
|
|
var keyVal = CCryptoHelp._getKey();
|
||
|
|
var encrypted = CryptoJS.AES.encrypt(str, keyVal, {
|
||
|
|
iv: null,
|
||
|
|
mode: CryptoJS.mode.ECB,
|
||
|
|
padding: CryptoJS.pad.ZeroPadding
|
||
|
|
});
|
||
|
|
return encrypted.toString();
|
||
|
|
},
|
||
|
|
// AES解密
|
||
|
|
decrypt: function decrypt(str) {
|
||
|
|
if (!str || 0 === str.length) {
|
||
|
|
return "";
|
||
|
|
}
|
||
|
|
var keyVal = CCryptoHelp._getKey();
|
||
|
|
var decrypt = CryptoJS.AES.decrypt(str, keyVal, {
|
||
|
|
iv: null,
|
||
|
|
mode: CryptoJS.mode.ECB,
|
||
|
|
padding: CryptoJS.pad.ZeroPadding
|
||
|
|
});
|
||
|
|
return CryptoJS.enc.Utf8.stringify(decrypt);
|
||
|
|
|
||
|
|
// let decryptedStr = decrypt.toString( CryptoJS.enc.Utf8 );
|
||
|
|
// return decryptedStr.toString();
|
||
|
|
},
|
||
|
|
|
||
|
|
// MD5加密
|
||
|
|
md5FromString: function md5FromString(str) {
|
||
|
|
if (!str || 0 === str.length) {
|
||
|
|
return "";
|
||
|
|
}
|
||
|
|
return CryptoJS.MD5(str).toString().toLowerCase();
|
||
|
|
},
|
||
|
|
// MD5加密
|
||
|
|
md5FromBytes: function md5FromBytes(unit8Array) {
|
||
|
|
if (!unit8Array || 0 === unit8Array.length) {
|
||
|
|
return "";
|
||
|
|
}
|
||
|
|
var str = CryptoJS.enc.Hex.stringify(unit8Array);
|
||
|
|
return CryptoJS.MD5(str).toString().toLowerCase();
|
||
|
|
},
|
||
|
|
// 十六进制字符串数组,个数如果不足16整数倍则补0
|
||
|
|
hexTo16Hex: function hexTo16Hex(str) {
|
||
|
|
var diff = 16 - (str.length + 1) / 3 % 16;
|
||
|
|
for (var i = 0; i < diff; i++) {
|
||
|
|
str = str + " 00";
|
||
|
|
}
|
||
|
|
return str;
|
||
|
|
},
|
||
|
|
// 构建WordArray对象
|
||
|
|
int8parse: function int8parse(u8arr) {
|
||
|
|
var len = u8arr.length;
|
||
|
|
var words = [];
|
||
|
|
for (var i = 0; i < len; i++) {
|
||
|
|
words[i >>> 2] |= (u8arr[i] & 0xff) << 24 - i % 4 * 8;
|
||
|
|
}
|
||
|
|
return CryptoJS.lib.WordArray.create(words, len);
|
||
|
|
},
|
||
|
|
// 十六进制字符串(空格分割)转成十进制数字的数组
|
||
|
|
hexStrToDecArray: function hexStrToDecArray(str) {
|
||
|
|
var strArray = str.split(" ");
|
||
|
|
var decArray = [];
|
||
|
|
for (var i = 0; i < strArray.length; i++) {
|
||
|
|
decArray.push(parseInt(strArray[i], 16));
|
||
|
|
}
|
||
|
|
return CCryptoHelp.arrayTo16Array(decArray);
|
||
|
|
},
|
||
|
|
// 十进制数组转成十六进制字符串
|
||
|
|
decArrayToHexStr: function decArrayToHexStr(array) {
|
||
|
|
var hexStr = "";
|
||
|
|
for (var i = 0; i < array.length; i++) {
|
||
|
|
var str = array[i].toString(16).toUpperCase();
|
||
|
|
if (str.length < 2) {
|
||
|
|
str = "0" + str;
|
||
|
|
}
|
||
|
|
hexStr = hexStr + str + " ";
|
||
|
|
}
|
||
|
|
return hexStr.substr(0, hexStr.length - 1);
|
||
|
|
},
|
||
|
|
// word类型的十进制数组转成十六进制字符串
|
||
|
|
wordArrayToHexStr: function wordArrayToHexStr(array) {
|
||
|
|
var hexStr = "";
|
||
|
|
for (var i = 0; i < array.length; i++) {
|
||
|
|
var num = array[i];
|
||
|
|
if (num < 0) {
|
||
|
|
num = array[i] + 0x100000000;
|
||
|
|
}
|
||
|
|
var str = num.toString(16).toUpperCase();
|
||
|
|
var fullStr = str;
|
||
|
|
if (str.length < 8) {
|
||
|
|
for (var j = 0; j < 8 - str.length; j++) {
|
||
|
|
fullStr = "0" + fullStr;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
hexStr = hexStr + fullStr;
|
||
|
|
}
|
||
|
|
var ret = "";
|
||
|
|
for (var i = 0; i < hexStr.length; i += 2) {
|
||
|
|
ret = ret + hexStr.substr(i, 2) + " ";
|
||
|
|
}
|
||
|
|
return ret.substr(0, ret.length - 1);
|
||
|
|
},
|
||
|
|
// 数组元素个数必须是16的整数倍,不足的在后面补0
|
||
|
|
arrayTo16Array: function arrayTo16Array(array) {
|
||
|
|
var len = array.length;
|
||
|
|
var distLen = parseInt((array.length - 1) / 16) * 16 + 16;
|
||
|
|
for (var i = array.length; i < distLen; i++) {
|
||
|
|
array[i] = 0;
|
||
|
|
}
|
||
|
|
return array;
|
||
|
|
}
|
||
|
|
};
|
||
|
|
module.exports = CCryptoHelp;
|
||
|
|
|
||
|
|
cc._RF.pop();
|