开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1603|回复: 6
收起左侧

[JS例程分享] 求JS 加密过程和返回解密过程

[复制链接]
结帖率:25% (1/4)
发表于 2020-7-9 17:21:41 | 显示全部楼层 |阅读模式   广东省汕头市
50精币
http://tiger.wlnxx.top/api/login/login
post {"send":"/e2DAImBOUDNqXueFtlkx9U8VoHdGAQOrDtV0VRMPzYKuZvJoXz+y6dGX6vmHITfGv5lJQpJGuqlaXcw/kziag=="}


{"receive":"BEMe\/A6GSnj7VFzY0rZjJ\/fLMIBwQ\/0BzAvp7lIDcCHTRlpNoAN7TeFyZi58+cIu44jGUtKQCcATEFQ7Rb8mHp4ltTMcknuXuW0IixzOsc\/5pxB6t9xaJ1qMSPjIuBNyu1iI\/Ne38nzK3dx0eVBelA\/ZH3dBVyeLHq9Pi1kSV3A="}




function b(a, e, i) {
            var o = g
              , n = v;
            if (null != a) {
                var s = h.a.enc.Utf8.parse(a)
                  , t = h.a.AES.encrypt(s, o, {
                    iv: n,
                    mode: h.a.mode.CBC,
                    padding: h.a.pad.Pkcs7
                });
                return t.toString()
            }
        }
        function k(a, e, i) {
            var o = g
              , n = v;
            if (null != a)
                return h.a.AES.decrypt(a, o, {
                    iv: n,
                    mode: h.a.mode.CBC,
                    padding: h.a.pad.Pkcs7
                }).toString(h.a.enc.Utf8)
        }


最佳答案

查看完整内容

加密调用 AES_Encrypt('') 解密调用 AES_Decrypt('') 解密记得把返回文本中 \ 替换成空 因为 这个是转义符

结帖率:100% (1/1)

签到天数: 23 天

发表于 2020-7-9 17:21:42 | 显示全部楼层   湖南省娄底市
  1. var CryptoJS = CryptoJS || (function (Math, undefined) {
  2.     var C = {};
  3.     var C_lib = C.lib = {};
  4.     var Base = C_lib.Base = (function () {
  5.         function F() {};
  6.         return {
  7.             extend: function (overrides) {
  8.                 F.prototype = this;
  9.                 var subtype = new F();
  10.                 if (overrides) {
  11.                     subtype.mixIn(overrides);
  12.                 }
  13.                 if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {
  14.                     subtype.init = function () {
  15.                         subtype.$super.init.apply(this, arguments);
  16.                     };
  17.                 }
  18.                 subtype.init.prototype = subtype;
  19.                 subtype.$super = this;
  20.                 return subtype;
  21.             }, create: function () {
  22.                 var instance = this.extend();
  23.                 instance.init.apply(instance, arguments);
  24.                 return instance;
  25.             }, init: function () {}, mixIn: function (properties) {
  26.                 for (var propertyName in properties) {
  27.                     if (properties.hasOwnProperty(propertyName)) {
  28.                         this[propertyName] = properties[propertyName];
  29.                     }
  30.                 }
  31.                 if (properties.hasOwnProperty('toString')) {
  32.                     this.toString = properties.toString;
  33.                 }
  34.             }, clone: function () {
  35.                 return this.init.prototype.extend(this);
  36.             }
  37.         };
  38.     }());
  39.     var WordArray = C_lib.WordArray = Base.extend({
  40.         init: function (words, sigBytes) {
  41.             words = this.words = words || [];
  42.             if (sigBytes != undefined) {
  43.                 this.sigBytes = sigBytes;
  44.             } else {
  45.                 this.sigBytes = words.length * 4;
  46.             }
  47.         }, toString: function (encoder) {
  48.             return (encoder || Hex).stringify(this);
  49.         }, concat: function (wordArray) {
  50.             var thisWords = this.words;
  51.             var thatWords = wordArray.words;
  52.             var thisSigBytes = this.sigBytes;
  53.             var thatSigBytes = wordArray.sigBytes;
  54.             this.clamp();
  55.             if (thisSigBytes % 4) {
  56.                 for (var i = 0; i < thatSigBytes; i++) {
  57.                     var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
  58.                     thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);
  59.                 }
  60.             } else if (thatWords.length > 0xffff) {
  61.                 for (var i = 0; i < thatSigBytes; i += 4) {
  62.                     thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2];
  63.                 }
  64.             } else {
  65.                 thisWords.push.apply(thisWords, thatWords);
  66.             }
  67.             this.sigBytes += thatSigBytes;
  68.             return this;
  69.         }, clamp: function () {
  70.             var words = this.words;
  71.             var sigBytes = this.sigBytes;
  72.             words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);
  73.             words.length = Math.ceil(sigBytes / 4);
  74.         }, clone: function () {
  75.             var clone = Base.clone.call(this);
  76.             clone.words = this.words.slice(0);
  77.             return clone;
  78.         }, random: function (nBytes) {
  79.             var words = [];
  80.             var r = (function (m_w) {
  81.                 var m_w = m_w;
  82.                 var m_z = 0x3ade68b1;
  83.                 var mask = 0xffffffff;
  84.                 return function () {
  85.                     m_z = (0x9069 * (m_z & 0xFFFF) + (m_z >> 0x10)) & mask;
  86.                     m_w = (0x4650 * (m_w & 0xFFFF) + (m_w >> 0x10)) & mask;
  87.                     var result = ((m_z << 0x10) + m_w) & mask;
  88.                     result /= 0x100000000;
  89.                     result += 0.5;
  90.                     return result * (Math.random() > .5 ? 1 : -1);
  91.                 }
  92.             });
  93.             for (var i = 0, rcache; i < nBytes; i += 4) {
  94.                 var _r = r((rcache || Math.random()) * 0x100000000);
  95.                 rcache = _r() * 0x3ade67b7;
  96.                 words.push((_r() * 0x100000000) | 0);
  97.             }
  98.             return new WordArray.init(words, nBytes);
  99.         }
  100.     });
  101.     var C_enc = C.enc = {};
  102.     var Hex = C_enc.Hex = {
  103.         stringify: function (wordArray) {
  104.             var words = wordArray.words;
  105.             var sigBytes = wordArray.sigBytes;
  106.             var hexChars = [];
  107.             for (var i = 0; i < sigBytes; i++) {
  108.                 var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
  109.                 hexChars.push((bite >>> 4).toString(16));
  110.                 hexChars.push((bite & 0x0f).toString(16));
  111.             }
  112.             return hexChars.join('');
  113.         }, parse: function (hexStr) {
  114.             var hexStrLength = hexStr.length;
  115.             var words = [];
  116.             for (var i = 0; i < hexStrLength; i += 2) {
  117.                 words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);
  118.             }
  119.             return new WordArray.init(words, hexStrLength / 2);
  120.         }
  121.     };
  122.     var Latin1 = C_enc.Latin1 = {
  123.         stringify: function (wordArray) {
  124.             var words = wordArray.words;
  125.             var sigBytes = wordArray.sigBytes;
  126.             var latin1Chars = [];
  127.             for (var i = 0; i < sigBytes; i++) {
  128.                 var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
  129.                 latin1Chars.push(String.fromCharCode(bite));
  130.             }
  131.             return latin1Chars.join('');
  132.         }, parse: function (latin1Str) {
  133.             var latin1StrLength = latin1Str.length;
  134.             var words = [];
  135.             for (var i = 0; i < latin1StrLength; i++) {
  136.                 words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);
  137.             }
  138.             return new WordArray.init(words, latin1StrLength);
  139.         }
  140.     };
  141.     var Utf8 = C_enc.Utf8 = {
  142.         stringify: function (wordArray) {
  143.             try {
  144.                 return decodeURIComponent(escape(Latin1.stringify(wordArray)));
  145.             } catch (e) {
  146.                 throw new Error('Malformed UTF-8 data');
  147.             }
  148.         }, parse: function (utf8Str) {
  149.             return Latin1.parse(unescape(encodeURIComponent(utf8Str)));
  150.         }
  151.     };
  152.     var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({
  153.         reset: function () {
  154.             this._data = new WordArray.init();
  155.             this._nDataBytes = 0;
  156.         }, _append: function (data) {
  157.             if (typeof data == 'string') {
  158.                 data = Utf8.parse(data);
  159.             }
  160.             this._data.concat(data);
  161.             this._nDataBytes += data.sigBytes;
  162.         }, _process: function (doFlush) {
  163.             var data = this._data;
  164.             var dataWords = data.words;
  165.             var dataSigBytes = data.sigBytes;
  166.             var blockSize = this.blockSize;
  167.             var blockSizeBytes = blockSize * 4;
  168.             var nBlocksReady = dataSigBytes / blockSizeBytes;
  169.             if (doFlush) {
  170.                 nBlocksReady = Math.ceil(nBlocksReady);
  171.             } else {
  172.                 nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);
  173.             }
  174.             var nWordsReady = nBlocksReady * blockSize;
  175.             var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);
  176.             if (nWordsReady) {
  177.                 for (var offset = 0; offset < nWordsReady; offset += blockSize) {
  178.                     this._doProcessBlock(dataWords, offset);
  179.                 }
  180.                 var processedWords = dataWords.splice(0, nWordsReady);
  181.                 data.sigBytes -= nBytesReady;
  182.             }
  183.             return new WordArray.init(processedWords, nBytesReady);
  184.         }, clone: function () {
  185.             var clone = Base.clone.call(this);
  186.             clone._data = this._data.clone();
  187.             return clone;
  188.         }, _minBufferSize: 0
  189.     });
  190.     var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({
  191.         cfg: Base.extend(),
  192.         init: function (cfg) {
  193.             this.cfg = this.cfg.extend(cfg);
  194.             this.reset();
  195.         }, reset: function () {
  196.             BufferedBlockAlgorithm.reset.call(this);
  197.             this._doReset();
  198.         }, update: function (messageUpdate) {
  199.             this._append(messageUpdate);
  200.             this._process();
  201.             return this;
  202.         }, finalize: function (messageUpdate) {
  203.             if (messageUpdate) {
  204.                 this._append(messageUpdate);
  205.             }
  206.             var hash = this._doFinalize();
  207.             return hash;
  208.         }, blockSize: 512 / 32,
  209.         _createHelper: function (hasher) {
  210.             return function (message, cfg) {
  211.                 return new hasher.init(cfg).finalize(message);
  212.             };
  213.         }, _createHmacHelper: function (hasher) {
  214.             return function (message, key) {
  215.                 return new C_algo.HMAC.init(hasher, key).finalize(message);
  216.             };
  217.         }
  218.     });
  219.     var C_algo = C.algo = {};
  220.     return C;
  221. }(Math));


  222. (function () {
  223.     var C = CryptoJS;
  224.     var C_lib = C.lib;
  225.     var WordArray = C_lib.WordArray;
  226.     var C_enc = C.enc;
  227.     var Base64 = C_enc.Base64 = {
  228.         stringify: function (wordArray) {
  229.             var words = wordArray.words;
  230.             var sigBytes = wordArray.sigBytes;
  231.             var map = this._map;
  232.             wordArray.clamp();
  233.             var base64Chars = [];
  234.             for (var i = 0; i < sigBytes; i += 3) {
  235.                 var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
  236.                 var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;
  237.                 var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;
  238.                 var triplet = (byte1 << 16) | (byte2 << 8) | byte3;
  239.                 for (var j = 0;
  240.                     (j < 4) && (i + j * 0.75 < sigBytes); j++) {
  241.                     base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));
  242.                 }
  243.             }
  244.             var paddingChar = map.charAt(64);
  245.             if (paddingChar) {
  246.                 while (base64Chars.length % 4) {
  247.                     base64Chars.push(paddingChar);
  248.                 }
  249.             }
  250.             return base64Chars.join('');
  251.         }, parse: function (base64Str) {
  252.             var base64StrLength = base64Str.length;
  253.             var map = this._map;
  254.             var reverseMap = this._reverseMap;
  255.             if (!reverseMap) {
  256.                 reverseMap = this._reverseMap = [];
  257.                 for (var j = 0; j < map.length; j++) {
  258.                     reverseMap[map.charCodeAt(j)] = j;
  259.                 }
  260.             }
  261.             var paddingChar = map.charAt(64);
  262.             if (paddingChar) {
  263.                 var paddingIndex = base64Str.indexOf(paddingChar);
  264.                 if (paddingIndex !== -1) {
  265.                     base64StrLength = paddingIndex;
  266.                 }
  267.             }
  268.             return parseLoop(base64Str, base64StrLength, reverseMap);
  269.         }, _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='
  270.     };
  271.     function parseLoop(base64Str, base64StrLength, reverseMap) {
  272.         var words = [];
  273.         var nBytes = 0;
  274.         for (var i = 0; i < base64StrLength; i++) {
  275.             if (i % 4) {
  276.                 var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);
  277.                 var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);
  278.                 words[nBytes >>> 2] |= (bits1 | bits2) << (24 - (nBytes % 4) * 8);
  279.                 nBytes++;
  280.             }
  281.         }
  282.         return WordArray.create(words, nBytes);
  283.     }
  284. }());

  285. (function (Math) {
  286.     var C = CryptoJS;
  287.     var C_lib = C.lib;
  288.     var WordArray = C_lib.WordArray;
  289.     var Hasher = C_lib.Hasher;
  290.     var C_algo = C.algo;
  291.     var T = [];
  292.     (function () {
  293.         for (var i = 0; i < 64; i++) {
  294.             T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;
  295.         }
  296.     }());
  297.     var MD5 = C_algo.MD5 = Hasher.extend({
  298.         _doReset: function () {
  299.             this._hash = new WordArray.init([0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476]);
  300.         }, _doProcessBlock: function (M, offset) {
  301.             for (var i = 0; i < 16; i++) {
  302.                 var offset_i = offset + i;
  303.                 var M_offset_i = M[offset_i];
  304.                 M[offset_i] = ((((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) | (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00));
  305.             }
  306.             var H = this._hash.words;
  307.             var M_offset_0 = M[offset + 0];
  308.             var M_offset_1 = M[offset + 1];
  309.             var M_offset_2 = M[offset + 2];
  310.             var M_offset_3 = M[offset + 3];
  311.             var M_offset_4 = M[offset + 4];
  312.             var M_offset_5 = M[offset + 5];
  313.             var M_offset_6 = M[offset + 6];
  314.             var M_offset_7 = M[offset + 7];
  315.             var M_offset_8 = M[offset + 8];
  316.             var M_offset_9 = M[offset + 9];
  317.             var M_offset_10 = M[offset + 10];
  318.             var M_offset_11 = M[offset + 11];
  319.             var M_offset_12 = M[offset + 12];
  320.             var M_offset_13 = M[offset + 13];
  321.             var M_offset_14 = M[offset + 14];
  322.             var M_offset_15 = M[offset + 15];
  323.             var a = H[0];
  324.             var b = H[1];
  325.             var c = H[2];
  326.             var d = H[3];
  327.             a = FF(a, b, c, d, M_offset_0, 7, T[0]);
  328.             d = FF(d, a, b, c, M_offset_1, 12, T[1]);
  329.             c = FF(c, d, a, b, M_offset_2, 17, T[2]);
  330.             b = FF(b, c, d, a, M_offset_3, 22, T[3]);
  331.             a = FF(a, b, c, d, M_offset_4, 7, T[4]);
  332.             d = FF(d, a, b, c, M_offset_5, 12, T[5]);
  333.             c = FF(c, d, a, b, M_offset_6, 17, T[6]);
  334.             b = FF(b, c, d, a, M_offset_7, 22, T[7]);
  335.             a = FF(a, b, c, d, M_offset_8, 7, T[8]);
  336.             d = FF(d, a, b, c, M_offset_9, 12, T[9]);
  337.             c = FF(c, d, a, b, M_offset_10, 17, T[10]);
  338.             b = FF(b, c, d, a, M_offset_11, 22, T[11]);
  339.             a = FF(a, b, c, d, M_offset_12, 7, T[12]);
  340.             d = FF(d, a, b, c, M_offset_13, 12, T[13]);
  341.             c = FF(c, d, a, b, M_offset_14, 17, T[14]);
  342.             b = FF(b, c, d, a, M_offset_15, 22, T[15]);
  343.             a = GG(a, b, c, d, M_offset_1, 5, T[16]);
  344.             d = GG(d, a, b, c, M_offset_6, 9, T[17]);
  345.             c = GG(c, d, a, b, M_offset_11, 14, T[18]);
  346.             b = GG(b, c, d, a, M_offset_0, 20, T[19]);
  347.             a = GG(a, b, c, d, M_offset_5, 5, T[20]);
  348.             d = GG(d, a, b, c, M_offset_10, 9, T[21]);
  349.             c = GG(c, d, a, b, M_offset_15, 14, T[22]);
  350.             b = GG(b, c, d, a, M_offset_4, 20, T[23]);
  351.             a = GG(a, b, c, d, M_offset_9, 5, T[24]);
  352.             d = GG(d, a, b, c, M_offset_14, 9, T[25]);
  353.             c = GG(c, d, a, b, M_offset_3, 14, T[26]);
  354.             b = GG(b, c, d, a, M_offset_8, 20, T[27]);
  355.             a = GG(a, b, c, d, M_offset_13, 5, T[28]);
  356.             d = GG(d, a, b, c, M_offset_2, 9, T[29]);
  357.             c = GG(c, d, a, b, M_offset_7, 14, T[30]);
  358.             b = GG(b, c, d, a, M_offset_12, 20, T[31]);
  359.             a = HH(a, b, c, d, M_offset_5, 4, T[32]);
  360.             d = HH(d, a, b, c, M_offset_8, 11, T[33]);
  361.             c = HH(c, d, a, b, M_offset_11, 16, T[34]);
  362.             b = HH(b, c, d, a, M_offset_14, 23, T[35]);
  363.             a = HH(a, b, c, d, M_offset_1, 4, T[36]);
  364.             d = HH(d, a, b, c, M_offset_4, 11, T[37]);
  365.             c = HH(c, d, a, b, M_offset_7, 16, T[38]);
  366.             b = HH(b, c, d, a, M_offset_10, 23, T[39]);
  367.             a = HH(a, b, c, d, M_offset_13, 4, T[40]);
  368.             d = HH(d, a, b, c, M_offset_0, 11, T[41]);
  369.             c = HH(c, d, a, b, M_offset_3, 16, T[42]);
  370.             b = HH(b, c, d, a, M_offset_6, 23, T[43]);
  371.             a = HH(a, b, c, d, M_offset_9, 4, T[44]);
  372.             d = HH(d, a, b, c, M_offset_12, 11, T[45]);
  373.             c = HH(c, d, a, b, M_offset_15, 16, T[46]);
  374.             b = HH(b, c, d, a, M_offset_2, 23, T[47]);
  375.             a = II(a, b, c, d, M_offset_0, 6, T[48]);
  376.             d = II(d, a, b, c, M_offset_7, 10, T[49]);
  377.             c = II(c, d, a, b, M_offset_14, 15, T[50]);
  378.             b = II(b, c, d, a, M_offset_5, 21, T[51]);
  379.             a = II(a, b, c, d, M_offset_12, 6, T[52]);
  380.             d = II(d, a, b, c, M_offset_3, 10, T[53]);
  381.             c = II(c, d, a, b, M_offset_10, 15, T[54]);
  382.             b = II(b, c, d, a, M_offset_1, 21, T[55]);
  383.             a = II(a, b, c, d, M_offset_8, 6, T[56]);
  384.             d = II(d, a, b, c, M_offset_15, 10, T[57]);
  385.             c = II(c, d, a, b, M_offset_6, 15, T[58]);
  386.             b = II(b, c, d, a, M_offset_13, 21, T[59]);
  387.             a = II(a, b, c, d, M_offset_4, 6, T[60]);
  388.             d = II(d, a, b, c, M_offset_11, 10, T[61]);
  389.             c = II(c, d, a, b, M_offset_2, 15, T[62]);
  390.             b = II(b, c, d, a, M_offset_9, 21, T[63]);
  391.             H[0] = (H[0] + a) | 0;
  392.             H[1] = (H[1] + b) | 0;
  393.             H[2] = (H[2] + c) | 0;
  394.             H[3] = (H[3] + d) | 0;
  395.         }, _doFinalize: function () {
  396.             var data = this._data;
  397.             var dataWords = data.words;
  398.             var nBitsTotal = this._nDataBytes * 8;
  399.             var nBitsLeft = data.sigBytes * 8;
  400.             dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);
  401.             var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);
  402.             var nBitsTotalL = nBitsTotal;
  403.             dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = ((((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) | (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00));
  404.             dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = ((((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) | (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00));
  405.             data.sigBytes = (dataWords.length + 1) * 4;
  406.             this._process();
  407.             var hash = this._hash;
  408.             var H = hash.words;
  409.             for (var i = 0; i < 4; i++) {
  410.                 var H_i = H[i];
  411.                 H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) | (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);
  412.             }
  413.             return hash;
  414.         }, clone: function () {
  415.             var clone = Hasher.clone.call(this);
  416.             clone._hash = this._hash.clone();
  417.             return clone;
  418.         }
  419.     });
  420.     function FF(a, b, c, d, x, s, t) {
  421.         var n = a + ((b & c) | (~b & d)) + x + t;
  422.         return ((n << s) | (n >>> (32 - s))) + b;
  423.     }
  424.     function GG(a, b, c, d, x, s, t) {
  425.         var n = a + ((b & d) | (c & ~d)) + x + t;
  426.         return ((n << s) | (n >>> (32 - s))) + b;
  427.     }
  428.     function HH(a, b, c, d, x, s, t) {
  429.         var n = a + (b ^ c ^ d) + x + t;
  430.         return ((n << s) | (n >>> (32 - s))) + b;
  431.     }
  432.     function II(a, b, c, d, x, s, t) {
  433.         var n = a + (c ^ (b | ~d)) + x + t;
  434.         return ((n << s) | (n >>> (32 - s))) + b;
  435.     }
  436.     C.MD5 = Hasher._createHelper(MD5);
  437.     C.HmacMD5 = Hasher._createHmacHelper(MD5);
  438. }(Math));

  439. (function () {
  440.     var C = CryptoJS;
  441.     var C_lib = C.lib;
  442.     var Base = C_lib.Base;
  443.     var WordArray = C_lib.WordArray;
  444.     var C_algo = C.algo;
  445.     var MD5 = C_algo.MD5;
  446.     var EvpKDF = C_algo.EvpKDF = Base.extend({
  447.         cfg: Base.extend({
  448.             keySize: 128 / 32,
  449.             hasher: MD5,
  450.             iterations: 1
  451.         }),
  452.         init: function (cfg) {
  453.             this.cfg = this.cfg.extend(cfg);
  454.         }, compute: function (password, salt) {
  455.             var cfg = this.cfg;
  456.             var hasher = cfg.hasher.create();
  457.             var derivedKey = WordArray.create();
  458.             var derivedKeyWords = derivedKey.words;
  459.             var keySize = cfg.keySize;
  460.             var iterations = cfg.iterations;
  461.             while (derivedKeyWords.length < keySize) {
  462.                 if (block) {
  463.                     hasher.update(block);
  464.                 }
  465.                 var block = hasher.update(password).finalize(salt);
  466.                 hasher.reset();
  467.                 for (var i = 1; i < iterations; i++) {
  468.                     block = hasher.finalize(block);
  469.                     hasher.reset();
  470.                 }
  471.                 derivedKey.concat(block);
  472.             }
  473.             derivedKey.sigBytes = keySize * 4;
  474.             return derivedKey;
  475.         }
  476.     });
  477.     C.EvpKDF = function (password, salt, cfg) {
  478.         return EvpKDF.create(cfg).compute(password, salt);
  479.     };
  480. }());

  481. CryptoJS.lib.Cipher || (function (undefined) {
  482.     var C = CryptoJS;
  483.     var C_lib = C.lib;
  484.     var Base = C_lib.Base;
  485.     var WordArray = C_lib.WordArray;
  486.     var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;
  487.     var C_enc = C.enc;
  488.     var Utf8 = C_enc.Utf8;
  489.     var Base64 = C_enc.Base64;
  490.     var C_algo = C.algo;
  491.     var EvpKDF = C_algo.EvpKDF;
  492.     var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({
  493.         cfg: Base.extend(),
  494.         createEncryptor: function (key, cfg) {
  495.             return this.create(this._ENC_XFORM_MODE, key, cfg);
  496.         }, createDecryptor: function (key, cfg) {
  497.             return this.create(this._DEC_XFORM_MODE, key, cfg);
  498.         }, init: function (xformMode, key, cfg) {
  499.             this.cfg = this.cfg.extend(cfg);
  500.             this._xformMode = xformMode;
  501.             this._key = key;
  502.             this.reset();
  503.         }, reset: function () {
  504.             BufferedBlockAlgorithm.reset.call(this);
  505.             this._doReset();
  506.         }, process: function (dataUpdate) {
  507.             this._append(dataUpdate);
  508.             return this._process();
  509.         }, finalize: function (dataUpdate) {
  510.             if (dataUpdate) {
  511.                 this._append(dataUpdate);
  512.             }
  513.             var finalProcessedData = this._doFinalize();
  514.             return finalProcessedData;
  515.         }, keySize: 128 / 32,
  516.         ivSize: 128 / 32,
  517.         _ENC_XFORM_MODE: 1,
  518.         _DEC_XFORM_MODE: 2,
  519.         _createHelper: (function () {
  520.             function selectCipherStrategy(key) {
  521.                 if (typeof key == 'string') {
  522.                     return PasswordBasedCipher;
  523.                 } else {
  524.                     return SerializableCipher;
  525.                 }
  526.             }
  527.             return function (cipher) {
  528.                 return {
  529.                     encrypt: function (message, key, cfg) {
  530.                         return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);
  531.                     }, decrypt: function (ciphertext, key, cfg) {
  532.                         return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);
  533.                     }
  534.                 };
  535.             };
  536.         }())
  537.     });
  538.     var StreamCipher = C_lib.StreamCipher = Cipher.extend({
  539.         _doFinalize: function () {
  540.             var finalProcessedBlocks = this._process(!!'flush');
  541.             return finalProcessedBlocks;
  542.         }, blockSize: 1
  543.     });
  544.     var C_mode = C.mode = {};
  545.     var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({
  546.         createEncryptor: function (cipher, iv) {
  547.             return this.Encryptor.create(cipher, iv);
  548.         }, createDecryptor: function (cipher, iv) {
  549.             return this.Decryptor.create(cipher, iv);
  550.         }, init: function (cipher, iv) {
  551.             this._cipher = cipher;
  552.             this._iv = iv;
  553.         }
  554.     });
  555.     var CBC = C_mode.CBC = (function () {
  556.         var CBC = BlockCipherMode.extend();
  557.         CBC.Encryptor = CBC.extend({
  558.             processBlock: function (words, offset) {
  559.                 var cipher = this._cipher;
  560.                 var blockSize = cipher.blockSize;
  561.                 xorBlock.call(this, words, offset, blockSize);
  562.                 cipher.encryptBlock(words, offset);
  563.                 this._prevBlock = words.slice(offset, offset + blockSize);
  564.             }
  565.         });
  566.         CBC.Decryptor = CBC.extend({
  567.             processBlock: function (words, offset) {
  568.                 var cipher = this._cipher;
  569.                 var blockSize = cipher.blockSize;
  570.                 var thisBlock = words.slice(offset, offset + blockSize);
  571.                 cipher.decryptBlock(words, offset);
  572.                 xorBlock.call(this, words, offset, blockSize);
  573.                 this._prevBlock = thisBlock;
  574.             }
  575.         });

  576.         function xorBlock(words, offset, blockSize) {
  577.             var iv = this._iv;
  578.             if (iv) {
  579.                 var block = iv;
  580.                 this._iv = undefined;
  581.             } else {
  582.                 var block = this._prevBlock;
  583.             }
  584.             for (var i = 0; i < blockSize; i++) {
  585.                 words[offset + i] ^= block[i];
  586.             }
  587.         }
  588.         return CBC;
  589.     }());
  590.     var C_pad = C.pad = {};
  591.     var Pkcs7 = C_pad.Pkcs7 = {
  592.         pad: function (data, blockSize) {
  593.             var blockSizeBytes = blockSize * 4;
  594.             var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;
  595.             var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;
  596.             var paddingWords = [];
  597.             for (var i = 0; i < nPaddingBytes; i += 4) {
  598.                 paddingWords.push(paddingWord);
  599.             }
  600.             var padding = WordArray.create(paddingWords, nPaddingBytes);
  601.             data.concat(padding);
  602.         }, unpad: function (data) {
  603.             var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;
  604.             data.sigBytes -= nPaddingBytes;
  605.         }
  606.     };
  607.     var BlockCipher = C_lib.BlockCipher = Cipher.extend({
  608.         cfg: Cipher.cfg.extend({
  609.             mode: CBC,
  610.             padding: Pkcs7
  611.         }),
  612.         reset: function () {
  613.             Cipher.reset.call(this);
  614.             var cfg = this.cfg;
  615.             var iv = cfg.iv;
  616.             var mode = cfg.mode;
  617.             if (this._xformMode == this._ENC_XFORM_MODE) {
  618.                 var modeCreator = mode.createEncryptor;
  619.             } else {
  620.                 var modeCreator = mode.createDecryptor;
  621.                 this._minBufferSize = 1;
  622.             } if (this._mode && this._mode.__creator == modeCreator) {
  623.                 this._mode.init(this, iv && iv.words);
  624.             } else {
  625.                 this._mode = modeCreator.call(mode, this, iv && iv.words);
  626.                 this._mode.__creator = modeCreator;
  627.             }
  628.         }, _doProcessBlock: function (words, offset) {
  629.             this._mode.processBlock(words, offset);
  630.         }, _doFinalize: function () {
  631.             var padding = this.cfg.padding;
  632.             if (this._xformMode == this._ENC_XFORM_MODE) {
  633.                 padding.pad(this._data, this.blockSize);
  634.                 var finalProcessedBlocks = this._process(!!'flush');
  635.             } else {
  636.                 var finalProcessedBlocks = this._process(!!'flush');
  637.                 padding.unpad(finalProcessedBlocks);
  638.             }
  639.             return finalProcessedBlocks;
  640.         }, blockSize: 128 / 32
  641.     });
  642.     var CipherParams = C_lib.CipherParams = Base.extend({
  643.         init: function (cipherParams) {
  644.             this.mixIn(cipherParams);
  645.         }, toString: function (formatter) {
  646.             return (formatter || this.formatter).stringify(this);
  647.         }
  648.     });
  649.     var C_format = C.format = {};
  650.     var OpenSSLFormatter = C_format.OpenSSL = {
  651.         stringify: function (cipherParams) {
  652.             var ciphertext = cipherParams.ciphertext;
  653.             var salt = cipherParams.salt;
  654.             if (salt) {
  655.                 var wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);
  656.             } else {
  657.                 var wordArray = ciphertext;
  658.             }
  659.             return wordArray.toString(Base64);
  660.         }, parse: function (openSSLStr) {
  661.             var ciphertext = Base64.parse(openSSLStr);
  662.             var ciphertextWords = ciphertext.words;
  663.             if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {
  664.                 var salt = WordArray.create(ciphertextWords.slice(2, 4));
  665.                 ciphertextWords.splice(0, 4);
  666.                 ciphertext.sigBytes -= 16;
  667.             }
  668.             return CipherParams.create({
  669.                 ciphertext: ciphertext,
  670.                 salt: salt
  671.             });
  672.         }
  673.     };
  674.     var SerializableCipher = C_lib.SerializableCipher = Base.extend({
  675.         cfg: Base.extend({
  676.             format: OpenSSLFormatter
  677.         }),
  678.         encrypt: function (cipher, message, key, cfg) {
  679.             cfg = this.cfg.extend(cfg);
  680.             var encryptor = cipher.createEncryptor(key, cfg);
  681.             var ciphertext = encryptor.finalize(message);
  682.             var cipherCfg = encryptor.cfg;
  683.             return CipherParams.create({
  684.                 ciphertext: ciphertext,
  685.                 key: key,
  686.                 iv: cipherCfg.iv,
  687.                 algorithm: cipher,
  688.                 mode: cipherCfg.mode,
  689.                 padding: cipherCfg.padding,
  690.                 blockSize: cipher.blockSize,
  691.                 formatter: cfg.format
  692.             });
  693.         }, decrypt: function (cipher, ciphertext, key, cfg) {
  694.             cfg = this.cfg.extend(cfg);
  695.             ciphertext = this._parse(ciphertext, cfg.format);
  696.             var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);
  697.             return plaintext;
  698.         }, _parse: function (ciphertext, format) {
  699.             if (typeof ciphertext == 'string') {
  700.                 return format.parse(ciphertext, this);
  701.             } else {
  702.                 return ciphertext;
  703.             }
  704.         }
  705.     });
  706.     var C_kdf = C.kdf = {};
  707.     var OpenSSLKdf = C_kdf.OpenSSL = {
  708.         execute: function (password, keySize, ivSize, salt) {
  709.             if (!salt) {
  710.                 salt = WordArray.random(64 / 8);
  711.             }
  712.             var key = EvpKDF.create({
  713.                 keySize: keySize + ivSize
  714.             }).compute(password, salt);
  715.             var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);
  716.             key.sigBytes = keySize * 4;
  717.             return CipherParams.create({
  718.                 key: key,
  719.                 iv: iv,
  720.                 salt: salt
  721.             });
  722.         }
  723.     };
  724.     var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({
  725.         cfg: SerializableCipher.cfg.extend({
  726.             kdf: OpenSSLKdf
  727.         }),
  728.         encrypt: function (cipher, message, password, cfg) {
  729.             cfg = this.cfg.extend(cfg);
  730.             var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);
  731.             cfg.iv = derivedParams.iv;
  732.             var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);
  733.             ciphertext.mixIn(derivedParams);
  734.             return ciphertext;
  735.         }, decrypt: function (cipher, ciphertext, password, cfg) {
  736.             cfg = this.cfg.extend(cfg);
  737.             ciphertext = this._parse(ciphertext, cfg.format);
  738.             var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);
  739.             cfg.iv = derivedParams.iv;
  740.             var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);
  741.             return plaintext;
  742.         }
  743.     });
  744. }());

  745. CryptoJS.pad.Pkcs7;
  746. (function () {
  747.     var C = CryptoJS;
  748.     var C_lib = C.lib;
  749.     var BlockCipher = C_lib.BlockCipher;
  750.     var C_algo = C.algo;
  751.     var SBOX = [];
  752.     var INV_SBOX = [];
  753.     var SUB_MIX_0 = [];
  754.     var SUB_MIX_1 = [];
  755.     var SUB_MIX_2 = [];
  756.     var SUB_MIX_3 = [];
  757.     var INV_SUB_MIX_0 = [];
  758.     var INV_SUB_MIX_1 = [];
  759.     var INV_SUB_MIX_2 = [];
  760.     var INV_SUB_MIX_3 = [];
  761.     (function () {
  762.         var d = [];
  763.         for (var i = 0; i < 256; i++) {
  764.             if (i < 128) {
  765.                 d[i] = i << 1;
  766.             } else {
  767.                 d[i] = (i << 1) ^ 0x11b;
  768.             }
  769.         }
  770.         var x = 0;
  771.         var xi = 0;
  772.         for (var i = 0; i < 256; i++) {
  773.             var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);
  774.             sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;
  775.             SBOX[x] = sx;
  776.             INV_SBOX[sx] = x;
  777.             var x2 = d[x];
  778.             var x4 = d[x2];
  779.             var x8 = d[x4];
  780.             var t = (d[sx] * 0x101) ^ (sx * 0x1010100);
  781.             SUB_MIX_0[x] = (t << 24) | (t >>> 8);
  782.             SUB_MIX_1[x] = (t << 16) | (t >>> 16);
  783.             SUB_MIX_2[x] = (t << 8) | (t >>> 24);
  784.             SUB_MIX_3[x] = t;
  785.             var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);
  786.             INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);
  787.             INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);
  788.             INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);
  789.             INV_SUB_MIX_3[sx] = t;
  790.             if (!x) {
  791.                 x = xi = 1;
  792.             } else {
  793.                 x = x2 ^ d[d[d[x8 ^ x2]]];
  794.                 xi ^= d[d[xi]];
  795.             }
  796.         }
  797.     }());
  798.     var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];
  799.     var AES = C_algo.AES = BlockCipher.extend({
  800.         _doReset: function () {
  801.             if (this._nRounds && this._keyPriorReset === this._key) {
  802.                 return;
  803.             }
  804.             var key = this._keyPriorReset = this._key;
  805.             var keyWords = key.words;
  806.             var keySize = key.sigBytes / 4;
  807.             var nRounds = this._nRounds = keySize + 6;
  808.             var ksRows = (nRounds + 1) * 4;
  809.             var keySchedule = this._keySchedule = [];
  810.             for (var ksRow = 0; ksRow < ksRows; ksRow++) {
  811.                 if (ksRow < keySize) {
  812.                     keySchedule[ksRow] = keyWords[ksRow];
  813.                 } else {
  814.                     var t = keySchedule[ksRow - 1];
  815.                     if (!(ksRow % keySize)) {
  816.                         t = (t << 8) | (t >>> 24);
  817.                         t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];
  818.                         t ^= RCON[(ksRow / keySize) | 0] << 24;
  819.                     } else if (keySize > 6 && ksRow % keySize == 4) {
  820.                         t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];
  821.                     }
  822.                     keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;
  823.                 }
  824.             }
  825.             var invKeySchedule = this._invKeySchedule = [];
  826.             for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {
  827.                 var ksRow = ksRows - invKsRow;
  828.                 if (invKsRow % 4) {
  829.                     var t = keySchedule[ksRow];
  830.                 } else {
  831.                     var t = keySchedule[ksRow - 4];
  832.                 } if (invKsRow < 4 || ksRow <= 4) {
  833.                     invKeySchedule[invKsRow] = t;
  834.                 } else {
  835.                     invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^ INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];
  836.                 }
  837.             }
  838.         }, encryptBlock: function (M, offset) {
  839.             this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);
  840.         }, decryptBlock: function (M, offset) {
  841.             var t = M[offset + 1];
  842.             M[offset + 1] = M[offset + 3];
  843.             M[offset + 3] = t;
  844.             this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);
  845.             var t = M[offset + 1];
  846.             M[offset + 1] = M[offset + 3];
  847.             M[offset + 3] = t;
  848.         }, _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {
  849.             var nRounds = this._nRounds;
  850.             var s0 = M[offset] ^ keySchedule[0];
  851.             var s1 = M[offset + 1] ^ keySchedule[1];
  852.             var s2 = M[offset + 2] ^ keySchedule[2];
  853.             var s3 = M[offset + 3] ^ keySchedule[3];
  854.             var ksRow = 4;
  855.             for (var round = 1; round < nRounds; round++) {
  856.                 var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];
  857.                 var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];
  858.                 var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];
  859.                 var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];
  860.                 s0 = t0;
  861.                 s1 = t1;
  862.                 s2 = t2;
  863.                 s3 = t3;
  864.             }
  865.             var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];
  866.             var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];
  867.             var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];
  868.             var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];
  869.             M[offset] = t0;
  870.             M[offset + 1] = t1;
  871.             M[offset + 2] = t2;
  872.             M[offset + 3] = t3;
  873.         }, keySize: 256 / 32
  874.     });
  875.     C.AES = BlockCipher._createHelper(AES);
  876. }());

  877. var key = CryptoJS.enc.Utf8.parse("1234123412ABCDEF");
  878. var iv = CryptoJS.enc.Utf8.parse("ABCDEF1234123412");

  879. function AES_Encrypt(word) {
  880.     var srcs = CryptoJS.enc.Utf8.parse(word);
  881.     var encrypted = CryptoJS.AES.encrypt(srcs, key, {
  882.         iv: iv,
  883.         mode: CryptoJS.mode.CBC,
  884.         padding: CryptoJS.pad.Pkcs7
  885.     });
  886.     return encrypted.toString();
  887. }

  888. function AES_Decrypt(word) {
  889.     var srcs = word;
  890.     var decrypt = CryptoJS.AES.decrypt(srcs, key, {
  891.         iv: iv,
  892.         mode: CryptoJS.mode.CBC,
  893.         padding: CryptoJS.pad.Pkcs7
  894.     });
  895.     return decrypt.toString(CryptoJS.enc.Utf8);
  896. }
复制代码
加密调用 AES_Encrypt('')
解密调用 AES_Decrypt('')  解密记得把返回文本中 \ 替换成空 因为 这个是转义符


评分

参与人数 1荣誉 +1 收起 理由
笨潴 + 1 热心帮助他人,荣誉+1,希望继续努力(*^__^*) 嘻嘻!

查看全部评分

回复

使用道具 举报

结帖率:52% (14/27)
发表于 2020-7-9 17:43:51 | 显示全部楼层   江苏省苏州市
aes加密,套算法就好了
密钥和填充得拿到,要么明文,要么文本返回得
回复

使用道具 举报

结帖率:100% (4/4)

签到天数: 18 天

发表于 2020-7-9 19:22:40 | 显示全部楼层   江苏省苏州市
en.rar (19.23 KB, 下载次数: 7)
回复

使用道具 举报

结帖率:25% (1/4)

签到天数: 1 天

 楼主| 发表于 2020-7-10 11:41:12 | 显示全部楼层   广东省汕头市

原谅我无知,我看你给的代码中只给出加密,没有解密,所以还是二楼的给的详细,但还是非常感谢你的回复!
回复

使用道具 举报

结帖率:25% (1/4)

签到天数: 1 天

 楼主| 发表于 2020-7-10 11:42:17 | 显示全部楼层   广东省汕头市
h6435749 发表于 2020-7-9 17:43
aes加密,套算法就好了
密钥和填充得拿到,要么明文,要么文本返回得

我知道 ,但我不懂JS所以来求代码!
回复

使用道具 举报

结帖率:25% (1/4)

签到天数: 1 天

 楼主| 发表于 2020-7-10 11:44:11 | 显示全部楼层   广东省汕头市
LeyBc 发表于 2020-7-9 17:21
加密调用 AES_Encrypt('')
解密调用 AES_Decrypt('')  解密记得把返回文本中 \ 替换成空 因为 这个是转义 ...

非常感谢,有空能描述一下加密和解密的过程么,本人不懂JS
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表