我爱编程

js 3des 加解密,附加demo (模式:cbc 或 ecb

2018-06-07  本文已影响0人  李佳明先生

部分js代码

//秘钥key
        var key = "12345677654321";
        //key不足24位自动以0(最小位数是0)补齐,如果多余24位,则截取前24位,后面多余则舍弃掉
        var base64 = CryptoJS.enc.Utf8.parse(key)
        //加密使用的是3DES中的ECB,解密对应的使用ECB
        function encrypt() {
            var text = document.getElementById('content').value+'';
            var encrypt = CryptoJS.TripleDES.encrypt(text, base64, {
                    iv: CryptoJS.enc.Utf8.parse('0123456789'),//iv偏移量
                    mode: CryptoJS.mode.CBC,  //CBC模式
                    // mode: CryptoJS.mode.ECB,  //ECB模式
                    padding: CryptoJS.pad.Pkcs7//padding处理
                }
            );
            var encryptData = encrypt.toString();//加密完成后,转换成字符串
            document.getElementById("encrypt").innerText=encryptData;
        }
        //解密
        function decrypt() {
            var text = document.getElementById("encrypt").innerText;
            var decrypt = CryptoJS.TripleDES.decrypt(text, base64, {
                    iv: CryptoJS.enc.Utf8.parse('0123456789'),
                    mode: CryptoJS.mode.CBC,
                    // mode: CryptoJS.mode.ECB,
                    padding: CryptoJS.pad.Pkcs7
                }
            );
            //解析数据后转为UTF-8
            var parseData = decrypt.toString(CryptoJS.enc.Utf8);
            document.getElementById("decrypt").innerText=parseData;
        }

最后要注意下,只有cbc模式有iv,ecb模式只有待解密字符串和key
github地址

上一篇下一篇

猜你喜欢

热点阅读