【js】常见公共方法封装
1.加密 解密 Aes
import { Modal } from 'antd';
import * as CryptoJS from 'crypto-js'; // aes加密
import { createHashHistory } from 'history'; // 如果是hash路由
const history = createHashHistory();
let dayFormat = 'YYYY-MM-DD';
let timeFormat = 'HH:mm:ss';
let dateFormat = 'YYYY-MM-DD HH:mm:ss';
let hourFormat = 'HH:mm';
let Aes = {
/*AES加密*/
Encrypt(data) {
let dataStr = data;
let AuthTokenKey = x + "" + x + "" + kValueC.kValue[2] + "" + kValueD.kValue[3] + "" + kValueE.kValue[4] + "" + kValueF.kValue[5] + "" + kValueG.kValue[6] + "" + kValueH.kValue[7] + "" + kValueA.kValue[8] + "" + kValueB.kValue[9] + "" + kValueC.kValue[10] + "" + kValueD.kValue[11] + "" + kValueE.kValue[12] + "" + kValueF.kValue[13] + "" + kValueG.kValue[14] + "" + kValueH.kValue[15];
let AuthTokenIv = vValueA.vValue[0] + "" + vValueB.vValue[1] + "" + vValueC.vValue[2] + "" + vValueD.vValue[3] + "" + vValueE.vValue[4] + "" + vValueF.vValue[5] + "" + vValueG.vValue[6] + "" + vValueH.vValue[7] + "" + vValueA.vValue[8] + "" + vValueB.vValue[9] + "" + vValueC.vValue[10] + "" + vValueD.vValue[11] + "" + vValueE.vValue[12] + "" + vValueF.vValue[13] + "" + vValueG.vValue[14] + "" + vValueH.vValue[15];
let encrypted = CryptoJS.AES.encrypt(dataStr, CryptoJS.enc.Latin1.parse(AuthTokenKey), {
iv: CryptoJS.enc.Latin1.parse(AuthTokenIv),
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
return encrypted.toString();
},
/*AES解密*/
Decrypt(data) {
let data2 = data //.replace(/\n/gm, "");
let AuthTokenKey = kValueA.kValue[0] + "" + kValueB.kValue[1] + "" + kValueC.kValue[2] + "" + kValueD.kValue[3] + "" + kValueE.kValue[4] + "" + kValueF.kValue[5] + "" + kValueG.kValue[6] + "" + kValueH.kValue[7] + "" + kValueA.kValue[8] + "" + kValueB.kValue[9] + "" + kValueC.kValue[10] + "" + kValueD.kValue[11] + "" + kValueE.kValue[12] + "" + kValueF.kValue[13] + "" + kValueG.kValue[14] + "" + kValueH.kValue[15];
let AuthTokenIv = vValueA.vValue[0] + "" + vValueB.vValue[1] + "" + vValueC.vValue[2] + "" + vValueD.vValue[3] + "" + vValueE.vValue[4] + "" + vValueF.vValue[5] + "" + vValueG.vValue[6] + "" + vValueH.vValue[7] + "" + vValueA.vValue[8] + "" + vValueB.vValue[9] + "" + vValueC.vValue[10] + "" + vValueD.vValue[11] + "" + vValueE.vValue[12] + "" + vValueF.vValue[13] + "" + vValueG.vValue[14] + "" + vValueH.vValue[15];
let decrypted = CryptoJS.AES.decrypt(data2, CryptoJS.enc.Latin1.parse(AuthTokenKey), {
iv: CryptoJS.enc.Latin1.parse(AuthTokenIv),
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
return decrypted.toString(CryptoJS.enc.Utf8);
}
}
let Keup = {
/*禁用组件tab脚本 UnTab([id1,id2,id3])*/
UnTab(arr) {
document.onkeydown = function(e) {
if (e.keyCode === 9) {
if (e.target) {
if (e.target && e.target.offsetParent) {
if (arr.indexOf(e.target.id) !== -1 || arr.indexOf(e.target.offsetParent.id) !== -1) {
if (e.preventDefault) { e.preventDefault(); } else { e.returnValue = false; }
}
}
}
}
}
},
/*弹框提示跳转*/
// Keup.ModalMessage(3, this, 'xxx错误', '跳转到登录页', '/Login','success')
// time 时间
// this 当前组件
// contentTitle 提示内容
// toTitle 去往哪里
// toAdree 跳转路由 'destroy'为特殊值 直接关闭
// type 类型
ModalMessage(time, dom, contentTitle, toTitle, toAdree, buttonTitle, type) {
let secondsToGo = time;
if (window.sessionStorage.getItem("ModalMessage") === 'Y') {
return false
}
window.sessionStorage.setItem("ModalMessage", 'Y');
const modal = Modal[type]({
title: contentTitle,
content: ` ${secondsToGo} 秒后` + toTitle,
okText: buttonTitle,
onOk() {
if (toAdree === 'destroy') {
modal.destroy();
window.sessionStorage.setItem("ModalMessage", 'N');
} else {
history.push(toAdree);
}
},
});
const timer = setInterval(() => {
secondsToGo -= 1;
modal.update({
content: ` ${secondsToGo} 秒后` + toTitle,
});
}, 1000);
setTimeout(() => {
clearInterval(timer);
if (toAdree === 'destroy') {
modal.destroy();
window.sessionStorage.setItem("ModalMessage", 'N');
} else {
history.push(toAdree);
}
modal.destroy();
window.sessionStorage.setItem("ModalMessage", 'N');
}, secondsToGo * 1000);
},
// 金额过滤 0.00
MoneyReplace(val) {
let newVal
//先把非数字的都替换掉,除了数字和.
newVal = val.replace(/[^\d.]/g, "");
//保证只有出现一个.而没有多个.
newVal = newVal.replace(/\.{2,}/g, ".");
//必须保证第一个为数字而不是.
newVal = newVal.replace(/^\./g, "");
//保证.只出现一次,而不能出现两次以上
newVal = newVal.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");
//只能输入两个小数
newVal = newVal.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3');
return newVal
},
// 获取字符串长度
getBLen(str) {
if (str == null) return 0;
if (typeof str != "string") {
str += "";
}
return str.replace(/[^\x00-\xff]/g, "01").length;
}
}
let ArraySome = {
// 将重复元素提取出到一个新数组或者单独数组去重
// let arr = [1, 2, 3, 1, 5, 7, 9, 8, '哈', '哈', 3, 8, 'a', 'a'];
// let a = ArrayWeigh(arr,'remove');
ArrayWeigh(arrs, type) {
arrs.sort(); //升排序数组
let remove = []; //定义一个数组,用于存放数组去重的元素
let repeat = []; //定义一个数组,用于存放所有重复的元素
for (var i = 0; i < arrs.length; i++) {
if (remove.indexOf(arrs[i]) === -1) { //判断在remove数组中是否存在,不存在则push到remove数组中
remove.push(arrs[i]);
}
}
//遍历数组找出重复元素
for (var j = 0; j < remove.length; j++) {
var q = 0; //声明一个变量,记录状态
for (var k = 0; k < arrs.length; k++) {
if (remove[j] === arrs[k]) {
q++;
if (q == 2) { //p为2时,重复元素有两个
repeat.push(remove[j], remove[j]);
} else if (q > 2) {
repeat.push(remove[j]);
}
}
}
}
if (type === 'remove') {
return remove;
}
if (type === 'repeat') {
return repeat;
}
},
//取出两个数组的不同元素
getArrDifference(arr1, arr2) {
return arr1.concat(arr2).filter(function(v, i, arr) {
return arr.indexOf(v) === arr.lastIndexOf(v);
})
},
// 数字加0
addPreZero(num, length) {
for (var len = (num + "").length; len < length; len = num.length) {
num = "0" + num;
}
return num;
},
//用于查找指定的元素在数组中的位置,即索引
indexOfArr(item, val) {
for (var i = 0; i < item.length; i++) {
if (item[i] == val) {
return i
}
}
return -1;
},
//使用js数组自己固有的函数去删除这个元素:
removeArr(item, val) {
var index = this.indexOfArr(item, val);
console.log(index)
if (index > -1) {
return item.splice(index, 1);
}
},
}
let Util = {
//判断是否是为空
isEmpty(str) {
let type = typeof str;
switch (type) {
case 'object': //如果是对象用stringify转成str 排除 {} 和 null
if (str instanceof Array) {
return str.length > 0 ? false : true;
} else {
let template = JSON.stringify(str);
return template === 'null' || template === '{}' ? true : false;
}
default: //其他
str = str + '';
if (str.length === 0 || str == 'undefined' || str == 'null') {
return true;
}
}
return false;
},
//判断空对象
isNull(obj) {
if (obj instanceof Object) {
for (let k in obj) {
return false
}
return true;
} else {
throw new Error('不是对象');
}
},
// 处理需要传递的对象当中的数据,有着传没有则不传
disposeData(data) {
let obj = {}
let result = Object.keys(data).filter(item => {
// if ((data[item] !== null) || (data[item] !== '') || (data[item] !== undefined)) {
return data[item] !== (null || '' || undefined)
// }
})
result.forEach(item => {
obj[item] = data[item]
})
return obj
},
// input框点击回车键切换到下一个选框
changeEnter(myRef1) {
var inputs = document.getElementsByClassName('input');
function init() {
for (let i = 0; i < inputs.length; i++) {
inputs[i].onkeydown = focus(i);
}
}
var focus = function handle(i) {
return function(event) {
var next = (i + 1) < inputs.length ? i + 1 : 0; // 判断是否为最后一个输入框,是则返回第一个,否则继续下一个
var eve = event ? event : window.event;
if (eve.keyCode === 13) {
if (inputs[next].tagName === 'INPUT') {
inputs[next].focus(); //获取焦点
} else {
myRef1.current.focus();
}
}
}
}
init()
},
// 开关的值修改为Y/N
replaceTrueFalse(val) {
if (val) {
return 'Y'
} else {
return 'N'
}
},
//通过日期获取星期
getWeek(day) {
var date = new Date();
var firstDay = new Date(date - (date.getDay() - 1) * 86400000);
firstDay.setDate(firstDay.getDate() + day);
var mon = Number(firstDay.getMonth()) + 1;
return date.getFullYear() + "-" + mon + "-" + firstDay.getDate();
},
//处理多个checkbox的公共方法
commonCheckbox(name, e) {
this.setState({
[name]: e.target.checked
})
},
//公共输入框
commonInputChange(name, e) {
this.setState({
[name]: e.target.value
})
},
//获取下拉框所选ID
handleSelectChange(name, e) {
this.setState({
[name]: e
})
},
//表单自定义验证 -- 身份证格式
vailIdCard(rule, value, callback) {
var city = { 11: "北京", 12: "天津", 13: "河北", 14: "山西", 15: "内蒙古", 21: "辽宁", 22: "吉林", 23: "黑龙江 ", 31: "上海", 32: "江苏", 33: "浙江", 34: "安徽", 35: "福建", 36: "江西", 37: "山东", 41: "河南", 42: "湖北 ", 43: "湖南", 44: "广东", 45: "广西", 46: "海南", 50: "重庆", 51: "四川", 52: "贵州", 53: "云南", 54: "西藏 ", 61: "陕西", 62: "甘肃", 63: "青海", 64: "宁夏", 65: "新疆", 71: "台湾", 81: "香港", 82: "澳门", 91: "国外 " };
if (!value || !/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i.test(value)) {
callback('身份证号格式错误'); // 校验未通过
return;
} else if (!city[value.substr(0, 2)]) {
callback('身份证号格式错误'); // 校验未通过
return;
} else {
//18位身份证需要验证最后一位校验位
if (value.length == 18) {
value = value.split('');
//∑(ai×Wi)(mod 11)
//加权因子
var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
//校验位
var parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2];
var sum = 0;
var ai = 0;
var wi = 0;
for (var i = 0; i < 17; i++) {
ai = value[i];
wi = factor[i];
sum += ai * wi;
}
var last = parity[sum % 11];
//最后一位不区分大小写
if (value[17] == 'x') value[17] = value[17].toUpperCase();
if (parity[sum % 11] != value[17]) {
callback('身份证号格式错误'); // 校验未通过
return;
}
}
}
callback();
},
//表单自定义验证 -- 联系方式
validFContact(rule, value, callback, editId) {
//数字1开头 网络识别号/地区编码不限 限11位
if (editId == "1") {
if (!value || !/^1\d{10}$/.test(value)) {
callback('手机格式错误'); // 校验未通过
return;
}
}
//数字 或者 数字 + " - " 组合
if (editId == "2") {
if (!value || !/^\d+(\-\d+)?$/.test(value)) {
callback('办公电话格式错误'); // 校验未通过
return;
}
}
//只能6—20个字母、数字、下划线和减号,必须以字母开头(不区分大小写),不支持设置中文(支持手机号码添加)
if (editId == "3") {
if (!value || !/^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+|^1\d{10}$/.test(value)) {
callback('微信格式错误'); // 校验未通过
return;
}
}
//qq4位以上数字
if (editId == "4") {
if (!value || !/^[1-9][0-9]{4,}$/.test(value)) {
callback('QQ格式错误');
return;
}
}
//开头可以是数字英文加下划线或者"." @后面也可以是数字英文加下划线
if (editId == "5" || editId == "7") {
if (!value || !/^(?:\w+\.?)*\w+@(?:\w+\.)+\w+$/.test(value)) {
if (editId == "5") {
callback('电子邮箱格式错误');
} else {
callback('Facebook邮箱格式错误');
}
return;
}
}
//邮箱或者手机号 邮箱开头可以是数字英文加下划线或者"." @后面也可以是数字英文加下划线
if (editId == "6") {
if (!value || !/^(?:\w+\.?)*\w+@(?:\w+\.)+\w+|^1\d{10}$/.test(value)) {
callback('支付宝格式错误');
return;
}
}
callback();
},
//- 将阿拉伯数字转换中文数字, 只处理到[0 ~ 99]
numberConvertToUppercase(num) {
num = Number(num);
var upperCaseNumber = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '百', '千', '万', '亿'];
var length = String(num).length;
if (length == 1) {
return upperCaseNumber[num];
} else if (length == 2) {
if (num == 10) {
return upperCaseNumber[num];
} else if (num > 10 && num < 20) {
return '十' + upperCaseNumber[String(num).charAt(1)];
} else {
return upperCaseNumber[String(num).charAt(0)] + '十' + upperCaseNumber[String(num).charAt(1)].replace('零', '');
}
}
},
// 判断对象中时候存在属性为空的字段
checkAttributeIsEmpty(obj) {
let arr = [];
for (let key of Object.keys(obj)) {
if (obj[key]) {
arr.push(key)
}
}
return arr && arr.length > 0 ? false : true;
}
}
let Reg = {
number: /^\d+$/,
}
let MD5 = {
md5(string){
function md5_RotateLeft(lValue, iShiftBits) {
return (lValue<<iShiftBits) | (lValue>>>(32-iShiftBits));
}
function md5_AddUnsigned(lX,lY){
var lX4,lY4,lX8,lY8,lResult;
lX8 = (lX & 0x80000000);
lY8 = (lY & 0x80000000);
lX4 = (lX & 0x40000000);
lY4 = (lY & 0x40000000);
lResult = (lX & 0x3FFFFFFF)+(lY & 0x3FFFFFFF);
if (lX4 & lY4) {
return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
}
if (lX4 | lY4) {
if (lResult & 0x40000000) {
return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
} else {
return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
}
} else {
return (lResult ^ lX8 ^ lY8);
}
}
function md5_F(x,y,z){
return (x & y) | ((~x) & z);
}
function md5_G(x,y,z){
return (x & z) | (y & (~z));
}
function md5_H(x,y,z){
return (x ^ y ^ z);
}
function md5_I(x,y,z){
return (y ^ (x | (~z)));
}
function md5_FF(a,b,c,d,x,s,ac){
a = md5_AddUnsigned(a, md5_AddUnsigned(md5_AddUnsigned(md5_F(b, c, d), x), ac));
return md5_AddUnsigned(md5_RotateLeft(a, s), b);
};
function md5_GG(a,b,c,d,x,s,ac){
a = md5_AddUnsigned(a, md5_AddUnsigned(md5_AddUnsigned(md5_G(b, c, d), x), ac));
return md5_AddUnsigned(md5_RotateLeft(a, s), b);
};
function md5_HH(a,b,c,d,x,s,ac){
a = md5_AddUnsigned(a, md5_AddUnsigned(md5_AddUnsigned(md5_H(b, c, d), x), ac));
return md5_AddUnsigned(md5_RotateLeft(a, s), b);
};
function md5_II(a,b,c,d,x,s,ac){
a = md5_AddUnsigned(a, md5_AddUnsigned(md5_AddUnsigned(md5_I(b, c, d), x), ac));
return md5_AddUnsigned(md5_RotateLeft(a, s), b);
};
function md5_ConvertToWordArray(string) {
var lWordCount;
var lMessageLength = string.length;
var lNumberOfWords_temp1=lMessageLength + 8;
var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1 % 64))/64;
var lNumberOfWords = (lNumberOfWords_temp2+1)*16;
var lWordArray=Array(lNumberOfWords-1);
var lBytePosition = 0;
var lByteCount = 0;
while ( lByteCount < lMessageLength ) {
lWordCount = (lByteCount-(lByteCount % 4))/4;
lBytePosition = (lByteCount % 4)*8;
lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount)<<lBytePosition));
lByteCount++;
}
lWordCount = (lByteCount-(lByteCount % 4))/4;
lBytePosition = (lByteCount % 4)*8;
lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80<<lBytePosition);
lWordArray[lNumberOfWords-2] = lMessageLength<<3;
lWordArray[lNumberOfWords-1] = lMessageLength>>>29;
return lWordArray;
};
function md5_WordToHex(lValue){
var WordToHexValue="",WordToHexValue_temp="",lByte,lCount;
for(lCount = 0;lCount<=3;lCount++){
lByte = (lValue>>>(lCount*8)) & 255;
WordToHexValue_temp = "0" + lByte.toString(16);
WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length-2,2);
}
return WordToHexValue;
};
function md5_Utf8Encode(string){
string = string.replace(/\r\n/g,"\n");
var utftext = "";
for (var n = 0; n < string.length; n++) {
var c = string.charCodeAt(n);
if (c < 128) {
utftext += String.fromCharCode(c);
}else if((c > 127) && (c < 2048)) {
utftext += String.fromCharCode((c >> 6) | 192);
utftext += String.fromCharCode((c & 63) | 128);
} else {
utftext += String.fromCharCode((c >> 12) | 224);
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
utftext += String.fromCharCode((c & 63) | 128);
}
}
return utftext;
};
var x=Array();
var k,AA,BB,CC,DD,a,b,c,d;
var S11=7, S12=12, S13=17, S14=22;
var S21=5, S22=9 , S23=14, S24=20;
var S31=4, S32=11, S33=16, S34=23;
var S41=6, S42=10, S43=15, S44=21;
string = md5_Utf8Encode(string);
x = md5_ConvertToWordArray(string);
a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476;
for (k=0;k<x.length;k+=16) {
AA=a; BB=b; CC=c; DD=d;
a=md5_FF(a,b,c,d,x[k+0], S11,0xD76AA478);
d=md5_FF(d,a,b,c,x[k+1], S12,0xE8C7B756);
c=md5_FF(c,d,a,b,x[k+2], S13,0x242070DB);
b=md5_FF(b,c,d,a,x[k+3], S14,0xC1BDCEEE);
a=md5_FF(a,b,c,d,x[k+4], S11,0xF57C0FAF);
d=md5_FF(d,a,b,c,x[k+5], S12,0x4787C62A);
c=md5_FF(c,d,a,b,x[k+6], S13,0xA8304613);
b=md5_FF(b,c,d,a,x[k+7], S14,0xFD469501);
a=md5_FF(a,b,c,d,x[k+8], S11,0x698098D8);
d=md5_FF(d,a,b,c,x[k+9], S12,0x8B44F7AF);
c=md5_FF(c,d,a,b,x[k+10],S13,0xFFFF5BB1);
b=md5_FF(b,c,d,a,x[k+11],S14,0x895CD7BE);
a=md5_FF(a,b,c,d,x[k+12],S11,0x6B901122);
d=md5_FF(d,a,b,c,x[k+13],S12,0xFD987193);
c=md5_FF(c,d,a,b,x[k+14],S13,0xA679438E);
b=md5_FF(b,c,d,a,x[k+15],S14,0x49B40821);
a=md5_GG(a,b,c,d,x[k+1], S21,0xF61E2562);
d=md5_GG(d,a,b,c,x[k+6], S22,0xC040B340);
c=md5_GG(c,d,a,b,x[k+11],S23,0x265E5A51);
b=md5_GG(b,c,d,a,x[k+0], S24,0xE9B6C7AA);
a=md5_GG(a,b,c,d,x[k+5], S21,0xD62F105D);
d=md5_GG(d,a,b,c,x[k+10],S22,0x2441453);
c=md5_GG(c,d,a,b,x[k+15],S23,0xD8A1E681);
b=md5_GG(b,c,d,a,x[k+4], S24,0xE7D3FBC8);
a=md5_GG(a,b,c,d,x[k+9], S21,0x21E1CDE6);
d=md5_GG(d,a,b,c,x[k+14],S22,0xC33707D6);
c=md5_GG(c,d,a,b,x[k+3], S23,0xF4D50D87);
b=md5_GG(b,c,d,a,x[k+8], S24,0x455A14ED);
a=md5_GG(a,b,c,d,x[k+13],S21,0xA9E3E905);
d=md5_GG(d,a,b,c,x[k+2], S22,0xFCEFA3F8);
c=md5_GG(c,d,a,b,x[k+7], S23,0x676F02D9);
b=md5_GG(b,c,d,a,x[k+12],S24,0x8D2A4C8A);
a=md5_HH(a,b,c,d,x[k+5], S31,0xFFFA3942);
d=md5_HH(d,a,b,c,x[k+8], S32,0x8771F681);
c=md5_HH(c,d,a,b,x[k+11],S33,0x6D9D6122);
b=md5_HH(b,c,d,a,x[k+14],S34,0xFDE5380C);
a=md5_HH(a,b,c,d,x[k+1], S31,0xA4BEEA44);
d=md5_HH(d,a,b,c,x[k+4], S32,0x4BDECFA9);
c=md5_HH(c,d,a,b,x[k+7], S33,0xF6BB4B60);
b=md5_HH(b,c,d,a,x[k+10],S34,0xBEBFBC70);
a=md5_HH(a,b,c,d,x[k+13],S31,0x289B7EC6);
d=md5_HH(d,a,b,c,x[k+0], S32,0xEAA127FA);
c=md5_HH(c,d,a,b,x[k+3], S33,0xD4EF3085);
b=md5_HH(b,c,d,a,x[k+6], S34,0x4881D05);
a=md5_HH(a,b,c,d,x[k+9], S31,0xD9D4D039);
d=md5_HH(d,a,b,c,x[k+12],S32,0xE6DB99E5);
c=md5_HH(c,d,a,b,x[k+15],S33,0x1FA27CF8);
b=md5_HH(b,c,d,a,x[k+2], S34,0xC4AC5665);
a=md5_II(a,b,c,d,x[k+0], S41,0xF4292244);
d=md5_II(d,a,b,c,x[k+7], S42,0x432AFF97);
c=md5_II(c,d,a,b,x[k+14],S43,0xAB9423A7);
b=md5_II(b,c,d,a,x[k+5], S44,0xFC93A039);
a=md5_II(a,b,c,d,x[k+12],S41,0x655B59C3);
d=md5_II(d,a,b,c,x[k+3], S42,0x8F0CCC92);
c=md5_II(c,d,a,b,x[k+10],S43,0xFFEFF47D);
b=md5_II(b,c,d,a,x[k+1], S44,0x85845DD1);
a=md5_II(a,b,c,d,x[k+8], S41,0x6FA87E4F);
d=md5_II(d,a,b,c,x[k+15],S42,0xFE2CE6E0);
c=md5_II(c,d,a,b,x[k+6], S43,0xA3014314);
b=md5_II(b,c,d,a,x[k+13],S44,0x4E0811A1);
a=md5_II(a,b,c,d,x[k+4], S41,0xF7537E82);
d=md5_II(d,a,b,c,x[k+11],S42,0xBD3AF235);
c=md5_II(c,d,a,b,x[k+2], S43,0x2AD7D2BB);
b=md5_II(b,c,d,a,x[k+9], S44,0xEB86D391);
a=md5_AddUnsigned(a,AA);
b=md5_AddUnsigned(b,BB);
c=md5_AddUnsigned(c,CC);
d=md5_AddUnsigned(d,DD);
}
return (md5_WordToHex(a)+md5_WordToHex(b)+md5_WordToHex(c)+md5_WordToHex(d)).toUpperCase();
}
}
let DES = {
//DES加密
encryptByDES(message, key){
var keyHex = CryptoJS.enc.Utf8.parse(key);
var encrypted = CryptoJS.DES.encrypt(message, keyHex, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
return encrypted.ciphertext.toString();
},
//DES解密
decryptByDES(ciphertext, key){
var keyHex = CryptoJS.enc.Utf8.parse(key);
var decrypted = CryptoJS.DES.decrypt({
ciphertext: CryptoJS.enc.Hex.parse(ciphertext)
}, keyHex, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
var result_value = decrypted.toString(CryptoJS.enc.Utf8);
return result_value;
}
}
module.exports = { Util, ArraySome, Aes, Keup, dayFormat, timeFormat, dateFormat, hourFormat, Reg,MD5, DES};

浙公网安备 33010602011771号