【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};

  

 

posted @ 2021-01-30 16:42  三行代码  阅读(101)  评论(0编辑  收藏  举报