开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 1870|回复: 11
收起左侧

[完成] 求个AES-CBC-pkcs5padding-128的加密模块

 关闭 [复制链接]
结帖率:55% (6/11)
发表于 2019-11-16 15:58:40 | 显示全部楼层 |阅读模式   云南省丽江市
100精币
如题


补充内容 (2019-11-16 16:14):
需要偏移量和密钥传入类型为字节集的 因为转成文本是乱码的 会出事情

最佳答案

查看完整内容

明显是APP逆向,不过,这玩意并不是很难!JS就可以完全的实现了

结帖率:100% (1/1)

签到天数: 17 天

发表于 2019-11-16 15:58:41 | 显示全部楼层   湖南省娄底市
明显是APP逆向,不过,这玩意并不是很难!JS就可以完全的实现了
QQ截图20191116172804.png

  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.Base64.parse("hdmEIkLwIpcrNhhcyS6IlWt7vEBAA+bmfz/dimqwV9o=");
  878. var iv = CryptoJS.enc.Base64.parse("8kVQnOqOv18jtLahu1dxPw");

  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. }
复制代码


回复

使用道具 举报

结帖率:78% (25/32)
发表于 2019-11-16 16:18:36 | 显示全部楼层   河北省石家庄市
可以把你的key iv 和 要加密数据发上来看看 是不是能搞
回复

使用道具 举报

结帖率:55% (6/11)
 楼主| 发表于 2019-11-16 16:24:17 | 显示全部楼层   云南省丽江市
暴走的莎莉酱 发表于 2019-11-16 16:18
可以把你的key iv 和 要加密数据发上来看看 是不是能搞

是这个意思 他原算法是直接传的字节集C:\Users\53237\Desktop\TIM截图20191116162208.png
然后我这里的AES只能传文本进去 把base64 编码过密钥iv的解码 再到文本 数据会变
回复

使用道具 举报

结帖率:78% (25/32)
发表于 2019-11-16 16:25:21 | 显示全部楼层   河北省石家庄市
不发 我也帮你测试不了能不能用
回复

使用道具 举报

结帖率:55% (6/11)
 楼主| 发表于 2019-11-16 16:26:02 | 显示全部楼层   云南省丽江市
TIM截图20191116162208.png
回复

使用道具 举报

结帖率:55% (6/11)
 楼主| 发表于 2019-11-16 16:30:06 | 显示全部楼层   云南省丽江市
暴走的莎莉酱 发表于 2019-11-16 16:18
可以把你的key iv 和 要加密数据发上来看看 是不是能搞

偏:8kVQnOqOv18jtLahu1dxPw
密:hdmEIkLwIpcrNhhcyS6IlWt7vEBAA+bmfz/dimqwV9o=
原文:{"timestamp":"1573890362","token":"eyJ1c2VyX2lkIjoyNzczMTAxMiwibGFzdGxvZ2luIjoxNTczNzkxOTM4fQ.841b800bbe6d39c19b1367472dfaad62.ed8679f96380c00dbc5a0316d031cd9ac3199f1e3641c04f21677e02","path":"v1/longs/menus","method":"GET"}
密文:
JpCcKUxXlatiafPO4hiOujoHx+ogRzrLTr558QxxQvme+Iw5N+kLcnBfAr3i4KTLl512o+7JkvVMHbB00uN1culj4ABkttfuDjZs6JGHWCnPpYh/uiqkygbydpJkbUzyeMIUcKPRMurgqoW3407l6AcNf6AT0VzLAKKyQcyyRkO4dYHhi7PyZd4QtwwUb5qlyYu+GdVxFRjdwt17mI10rOWfxDMxMQEBSjyl+k8kT96j4o5Drk1oNVtJrWwtIbfwI+Ru6VTVmEIbFKJ9X7Uv1sUon79v0x9Vsf8YHY7xyrifIdOY+EaIwRF0sYqbQKSx

补充内容 (2019-11-16 16:36):
偏移和密钥都是base64的
回复

使用道具 举报

结帖率:71% (32/45)
发表于 2019-11-16 17:09:37 | 显示全部楼层   广东省广州市
用e2ee吧=-=  加解密对象涵盖所有加密类型
回复

使用道具 举报

结帖率:55% (6/11)
 楼主| 发表于 2019-11-16 17:11:31 | 显示全部楼层   云南省丽江市
循环不计次 发表于 2019-11-16 17:09
用e2ee吧=-=  加解密对象涵盖所有加密类型

这个是啥 有支持库吗
回复

使用道具 举报

结帖率:71% (32/45)
发表于 2019-11-16 17:19:31 | 显示全部楼层   广东省广州市
回复

使用道具 举报

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

本版积分规则 致发广告者

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

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

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