aes.js 38 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355
  1. /*
  2. CryptoJS v3.1.2
  3. code.google.com/p/crypto-js
  4. (c) 2009-2013 by Jeff Mott. All rights reserved.
  5. code.google.com/p/crypto-js/wiki/License
  6. */
  7. var CryptoJS = CryptoJS || function(u, p) {
  8. var d = {},
  9. l = d.lib = {},
  10. s = function() {},
  11. t = l.Base = {
  12. extend: function(a) {
  13. s.prototype = this;
  14. var c = new s;
  15. a && c.mixIn(a);
  16. c.hasOwnProperty("init") || (c.init = function() {
  17. c.$super.init.apply(this, arguments)
  18. });
  19. c.init.prototype = c;
  20. c.$super = this;
  21. return c
  22. },
  23. create: function() {
  24. var a = this.extend();
  25. a.init.apply(a, arguments);
  26. return a
  27. },
  28. init: function() {},
  29. mixIn: function(a) {
  30. for(var c in a) a.hasOwnProperty(c) && (this[c] = a[c]);
  31. a.hasOwnProperty("toString") && (this.toString = a.toString)
  32. },
  33. clone: function() {
  34. return this.init.prototype.extend(this)
  35. }
  36. },
  37. r = l.WordArray = t.extend({
  38. init: function(a, c) {
  39. a = this.words = a || [];
  40. this.sigBytes = c != p ? c : 4 * a.length
  41. },
  42. toString: function(a) {
  43. return(a || v).stringify(this)
  44. },
  45. concat: function(a) {
  46. var c = this.words,
  47. e = a.words,
  48. j = this.sigBytes;
  49. a = a.sigBytes;
  50. this.clamp();
  51. if(j % 4)
  52. for(var k = 0; k < a; k++) c[j + k >>> 2] |= (e[k >>> 2] >>> 24 - 8 * (k % 4) & 255) << 24 - 8 * ((j + k) % 4);
  53. else if(65535 < e.length)
  54. for(k = 0; k < a; k += 4) c[j + k >>> 2] = e[k >>> 2];
  55. else c.push.apply(c, e);
  56. this.sigBytes += a;
  57. return this
  58. },
  59. clamp: function() {
  60. var a = this.words,
  61. c = this.sigBytes;
  62. a[c >>> 2] &= 4294967295 <<
  63. 32 - 8 * (c % 4);
  64. a.length = u.ceil(c / 4)
  65. },
  66. clone: function() {
  67. var a = t.clone.call(this);
  68. a.words = this.words.slice(0);
  69. return a
  70. },
  71. random: function(a) {
  72. for(var c = [], e = 0; e < a; e += 4) c.push(4294967296 * u.random() | 0);
  73. return new r.init(c, a)
  74. }
  75. }),
  76. w = d.enc = {},
  77. v = w.Hex = {
  78. stringify: function(a) {
  79. var c = a.words;
  80. a = a.sigBytes;
  81. for(var e = [], j = 0; j < a; j++) {
  82. var k = c[j >>> 2] >>> 24 - 8 * (j % 4) & 255;
  83. e.push((k >>> 4).toString(16));
  84. e.push((k & 15).toString(16))
  85. }
  86. return e.join("")
  87. },
  88. parse: function(a) {
  89. for(var c = a.length, e = [], j = 0; j < c; j += 2) e[j >>> 3] |= parseInt(a.substr(j,
  90. 2), 16) << 24 - 4 * (j % 8);
  91. return new r.init(e, c / 2)
  92. }
  93. },
  94. b = w.Latin1 = {
  95. stringify: function(a) {
  96. var c = a.words;
  97. a = a.sigBytes;
  98. for(var e = [], j = 0; j < a; j++) e.push(String.fromCharCode(c[j >>> 2] >>> 24 - 8 * (j % 4) & 255));
  99. return e.join("")
  100. },
  101. parse: function(a) {
  102. for(var c = a.length, e = [], j = 0; j < c; j++) e[j >>> 2] |= (a.charCodeAt(j) & 255) << 24 - 8 * (j % 4);
  103. return new r.init(e, c)
  104. }
  105. },
  106. x = w.Utf8 = {
  107. stringify: function(a) {
  108. try {
  109. return decodeURIComponent(escape(b.stringify(a)))
  110. } catch(c) {
  111. throw Error("Malformed UTF-8 data");
  112. }
  113. },
  114. parse: function(a) {
  115. return b.parse(unescape(encodeURIComponent(a)))
  116. }
  117. },
  118. q = l.BufferedBlockAlgorithm = t.extend({
  119. reset: function() {
  120. this._data = new r.init;
  121. this._nDataBytes = 0
  122. },
  123. _append: function(a) {
  124. "string" == typeof a && (a = x.parse(a));
  125. this._data.concat(a);
  126. this._nDataBytes += a.sigBytes
  127. },
  128. _process: function(a) {
  129. var c = this._data,
  130. e = c.words,
  131. j = c.sigBytes,
  132. k = this.blockSize,
  133. b = j / (4 * k),
  134. b = a ? u.ceil(b) : u.max((b | 0) - this._minBufferSize, 0);
  135. a = b * k;
  136. j = u.min(4 * a, j);
  137. if(a) {
  138. for(var q = 0; q < a; q += k) this._doProcessBlock(e, q);
  139. q = e.splice(0, a);
  140. c.sigBytes -= j
  141. }
  142. return new r.init(q, j)
  143. },
  144. clone: function() {
  145. var a = t.clone.call(this);
  146. a._data = this._data.clone();
  147. return a
  148. },
  149. _minBufferSize: 0
  150. });
  151. l.Hasher = q.extend({
  152. cfg: t.extend(),
  153. init: function(a) {
  154. this.cfg = this.cfg.extend(a);
  155. this.reset()
  156. },
  157. reset: function() {
  158. q.reset.call(this);
  159. this._doReset()
  160. },
  161. update: function(a) {
  162. this._append(a);
  163. this._process();
  164. return this
  165. },
  166. finalize: function(a) {
  167. a && this._append(a);
  168. return this._doFinalize()
  169. },
  170. blockSize: 16,
  171. _createHelper: function(a) {
  172. return function(b, e) {
  173. return(new a.init(e)).finalize(b)
  174. }
  175. },
  176. _createHmacHelper: function(a) {
  177. return function(b, e) {
  178. return(new n.HMAC.init(a,
  179. e)).finalize(b)
  180. }
  181. }
  182. });
  183. var n = d.algo = {};
  184. return d
  185. }(Math);
  186. (function() {
  187. var u = CryptoJS,
  188. p = u.lib.WordArray;
  189. u.enc.Base64 = {
  190. stringify: function(d) {
  191. var l = d.words,
  192. p = d.sigBytes,
  193. t = this._map;
  194. d.clamp();
  195. d = [];
  196. for(var r = 0; r < p; r += 3)
  197. for(var w = (l[r >>> 2] >>> 24 - 8 * (r % 4) & 255) << 16 | (l[r + 1 >>> 2] >>> 24 - 8 * ((r + 1) % 4) & 255) << 8 | l[r + 2 >>> 2] >>> 24 - 8 * ((r + 2) % 4) & 255, v = 0; 4 > v && r + 0.75 * v < p; v++) d.push(t.charAt(w >>> 6 * (3 - v) & 63));
  198. if(l = t.charAt(64))
  199. for(; d.length % 4;) d.push(l);
  200. return d.join("")
  201. },
  202. parse: function(d) {
  203. var l = d.length,
  204. s = this._map,
  205. t = s.charAt(64);
  206. t && (t = d.indexOf(t), -1 != t && (l = t));
  207. for(var t = [], r = 0, w = 0; w <
  208. l; w++)
  209. if(w % 4) {
  210. var v = s.indexOf(d.charAt(w - 1)) << 2 * (w % 4),
  211. b = s.indexOf(d.charAt(w)) >>> 6 - 2 * (w % 4);
  212. t[r >>> 2] |= (v | b) << 24 - 8 * (r % 4);
  213. r++
  214. }
  215. return p.create(t, r)
  216. },
  217. _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
  218. }
  219. })();
  220. (function(u) {
  221. function p(b, n, a, c, e, j, k) {
  222. b = b + (n & a | ~n & c) + e + k;
  223. return(b << j | b >>> 32 - j) + n
  224. }
  225. function d(b, n, a, c, e, j, k) {
  226. b = b + (n & c | a & ~c) + e + k;
  227. return(b << j | b >>> 32 - j) + n
  228. }
  229. function l(b, n, a, c, e, j, k) {
  230. b = b + (n ^ a ^ c) + e + k;
  231. return(b << j | b >>> 32 - j) + n
  232. }
  233. function s(b, n, a, c, e, j, k) {
  234. b = b + (a ^ (n | ~c)) + e + k;
  235. return(b << j | b >>> 32 - j) + n
  236. }
  237. for(var t = CryptoJS, r = t.lib, w = r.WordArray, v = r.Hasher, r = t.algo, b = [], x = 0; 64 > x; x++) b[x] = 4294967296 * u.abs(u.sin(x + 1)) | 0;
  238. r = r.MD5 = v.extend({
  239. _doReset: function() {
  240. this._hash = new w.init([1732584193, 4023233417, 2562383102, 271733878])
  241. },
  242. _doProcessBlock: function(q, n) {
  243. for(var a = 0; 16 > a; a++) {
  244. var c = n + a,
  245. e = q[c];
  246. q[c] = (e << 8 | e >>> 24) & 16711935 | (e << 24 | e >>> 8) & 4278255360
  247. }
  248. var a = this._hash.words,
  249. c = q[n + 0],
  250. e = q[n + 1],
  251. j = q[n + 2],
  252. k = q[n + 3],
  253. z = q[n + 4],
  254. r = q[n + 5],
  255. t = q[n + 6],
  256. w = q[n + 7],
  257. v = q[n + 8],
  258. A = q[n + 9],
  259. B = q[n + 10],
  260. C = q[n + 11],
  261. u = q[n + 12],
  262. D = q[n + 13],
  263. E = q[n + 14],
  264. x = q[n + 15],
  265. f = a[0],
  266. m = a[1],
  267. g = a[2],
  268. h = a[3],
  269. f = p(f, m, g, h, c, 7, b[0]),
  270. h = p(h, f, m, g, e, 12, b[1]),
  271. g = p(g, h, f, m, j, 17, b[2]),
  272. m = p(m, g, h, f, k, 22, b[3]),
  273. f = p(f, m, g, h, z, 7, b[4]),
  274. h = p(h, f, m, g, r, 12, b[5]),
  275. g = p(g, h, f, m, t, 17, b[6]),
  276. m = p(m, g, h, f, w, 22, b[7]),
  277. f = p(f, m, g, h, v, 7, b[8]),
  278. h = p(h, f, m, g, A, 12, b[9]),
  279. g = p(g, h, f, m, B, 17, b[10]),
  280. m = p(m, g, h, f, C, 22, b[11]),
  281. f = p(f, m, g, h, u, 7, b[12]),
  282. h = p(h, f, m, g, D, 12, b[13]),
  283. g = p(g, h, f, m, E, 17, b[14]),
  284. m = p(m, g, h, f, x, 22, b[15]),
  285. f = d(f, m, g, h, e, 5, b[16]),
  286. h = d(h, f, m, g, t, 9, b[17]),
  287. g = d(g, h, f, m, C, 14, b[18]),
  288. m = d(m, g, h, f, c, 20, b[19]),
  289. f = d(f, m, g, h, r, 5, b[20]),
  290. h = d(h, f, m, g, B, 9, b[21]),
  291. g = d(g, h, f, m, x, 14, b[22]),
  292. m = d(m, g, h, f, z, 20, b[23]),
  293. f = d(f, m, g, h, A, 5, b[24]),
  294. h = d(h, f, m, g, E, 9, b[25]),
  295. g = d(g, h, f, m, k, 14, b[26]),
  296. m = d(m, g, h, f, v, 20, b[27]),
  297. f = d(f, m, g, h, D, 5, b[28]),
  298. h = d(h, f,
  299. m, g, j, 9, b[29]),
  300. g = d(g, h, f, m, w, 14, b[30]),
  301. m = d(m, g, h, f, u, 20, b[31]),
  302. f = l(f, m, g, h, r, 4, b[32]),
  303. h = l(h, f, m, g, v, 11, b[33]),
  304. g = l(g, h, f, m, C, 16, b[34]),
  305. m = l(m, g, h, f, E, 23, b[35]),
  306. f = l(f, m, g, h, e, 4, b[36]),
  307. h = l(h, f, m, g, z, 11, b[37]),
  308. g = l(g, h, f, m, w, 16, b[38]),
  309. m = l(m, g, h, f, B, 23, b[39]),
  310. f = l(f, m, g, h, D, 4, b[40]),
  311. h = l(h, f, m, g, c, 11, b[41]),
  312. g = l(g, h, f, m, k, 16, b[42]),
  313. m = l(m, g, h, f, t, 23, b[43]),
  314. f = l(f, m, g, h, A, 4, b[44]),
  315. h = l(h, f, m, g, u, 11, b[45]),
  316. g = l(g, h, f, m, x, 16, b[46]),
  317. m = l(m, g, h, f, j, 23, b[47]),
  318. f = s(f, m, g, h, c, 6, b[48]),
  319. h = s(h, f, m, g, w, 10, b[49]),
  320. g = s(g, h, f, m,
  321. E, 15, b[50]),
  322. m = s(m, g, h, f, r, 21, b[51]),
  323. f = s(f, m, g, h, u, 6, b[52]),
  324. h = s(h, f, m, g, k, 10, b[53]),
  325. g = s(g, h, f, m, B, 15, b[54]),
  326. m = s(m, g, h, f, e, 21, b[55]),
  327. f = s(f, m, g, h, v, 6, b[56]),
  328. h = s(h, f, m, g, x, 10, b[57]),
  329. g = s(g, h, f, m, t, 15, b[58]),
  330. m = s(m, g, h, f, D, 21, b[59]),
  331. f = s(f, m, g, h, z, 6, b[60]),
  332. h = s(h, f, m, g, C, 10, b[61]),
  333. g = s(g, h, f, m, j, 15, b[62]),
  334. m = s(m, g, h, f, A, 21, b[63]);
  335. a[0] = a[0] + f | 0;
  336. a[1] = a[1] + m | 0;
  337. a[2] = a[2] + g | 0;
  338. a[3] = a[3] + h | 0
  339. },
  340. _doFinalize: function() {
  341. var b = this._data,
  342. n = b.words,
  343. a = 8 * this._nDataBytes,
  344. c = 8 * b.sigBytes;
  345. n[c >>> 5] |= 128 << 24 - c % 32;
  346. var e = u.floor(a /
  347. 4294967296);
  348. n[(c + 64 >>> 9 << 4) + 15] = (e << 8 | e >>> 24) & 16711935 | (e << 24 | e >>> 8) & 4278255360;
  349. n[(c + 64 >>> 9 << 4) + 14] = (a << 8 | a >>> 24) & 16711935 | (a << 24 | a >>> 8) & 4278255360;
  350. b.sigBytes = 4 * (n.length + 1);
  351. this._process();
  352. b = this._hash;
  353. n = b.words;
  354. for(a = 0; 4 > a; a++) c = n[a], n[a] = (c << 8 | c >>> 24) & 16711935 | (c << 24 | c >>> 8) & 4278255360;
  355. return b
  356. },
  357. clone: function() {
  358. var b = v.clone.call(this);
  359. b._hash = this._hash.clone();
  360. return b
  361. }
  362. });
  363. t.MD5 = v._createHelper(r);
  364. t.HmacMD5 = v._createHmacHelper(r)
  365. })(Math);
  366. (function() {
  367. var u = CryptoJS,
  368. p = u.lib,
  369. d = p.Base,
  370. l = p.WordArray,
  371. p = u.algo,
  372. s = p.EvpKDF = d.extend({
  373. cfg: d.extend({
  374. keySize: 4,
  375. hasher: p.MD5,
  376. iterations: 1
  377. }),
  378. init: function(d) {
  379. this.cfg = this.cfg.extend(d)
  380. },
  381. compute: function(d, r) {
  382. for(var p = this.cfg, s = p.hasher.create(), b = l.create(), u = b.words, q = p.keySize, p = p.iterations; u.length < q;) {
  383. n && s.update(n);
  384. var n = s.update(d).finalize(r);
  385. s.reset();
  386. for(var a = 1; a < p; a++) n = s.finalize(n), s.reset();
  387. b.concat(n)
  388. }
  389. b.sigBytes = 4 * q;
  390. return b
  391. }
  392. });
  393. u.EvpKDF = function(d, l, p) {
  394. return s.create(p).compute(d,
  395. l)
  396. }
  397. })();
  398. CryptoJS.lib.Cipher || function(u) {
  399. var p = CryptoJS,
  400. d = p.lib,
  401. l = d.Base,
  402. s = d.WordArray,
  403. t = d.BufferedBlockAlgorithm,
  404. r = p.enc.Base64,
  405. w = p.algo.EvpKDF,
  406. v = d.Cipher = t.extend({
  407. cfg: l.extend(),
  408. createEncryptor: function(e, a) {
  409. return this.create(this._ENC_XFORM_MODE, e, a)
  410. },
  411. createDecryptor: function(e, a) {
  412. return this.create(this._DEC_XFORM_MODE, e, a)
  413. },
  414. init: function(e, a, b) {
  415. this.cfg = this.cfg.extend(b);
  416. this._xformMode = e;
  417. this._key = a;
  418. this.reset()
  419. },
  420. reset: function() {
  421. t.reset.call(this);
  422. this._doReset()
  423. },
  424. process: function(e) {
  425. this._append(e);
  426. return this._process()
  427. },
  428. finalize: function(e) {
  429. e && this._append(e);
  430. return this._doFinalize()
  431. },
  432. keySize: 4,
  433. ivSize: 4,
  434. _ENC_XFORM_MODE: 1,
  435. _DEC_XFORM_MODE: 2,
  436. _createHelper: function(e) {
  437. return {
  438. encrypt: function(b, k, d) {
  439. return("string" == typeof k ? c : a).encrypt(e, b, k, d)
  440. },
  441. decrypt: function(b, k, d) {
  442. return("string" == typeof k ? c : a).decrypt(e, b, k, d)
  443. }
  444. }
  445. }
  446. });
  447. d.StreamCipher = v.extend({
  448. _doFinalize: function() {
  449. return this._process(!0)
  450. },
  451. blockSize: 1
  452. });
  453. var b = p.mode = {},
  454. x = function(e, a, b) {
  455. var c = this._iv;
  456. c ? this._iv = u : c = this._prevBlock;
  457. for(var d = 0; d < b; d++) e[a + d] ^=
  458. c[d]
  459. },
  460. q = (d.BlockCipherMode = l.extend({
  461. createEncryptor: function(e, a) {
  462. return this.Encryptor.create(e, a)
  463. },
  464. createDecryptor: function(e, a) {
  465. return this.Decryptor.create(e, a)
  466. },
  467. init: function(e, a) {
  468. this._cipher = e;
  469. this._iv = a
  470. }
  471. })).extend();
  472. q.Encryptor = q.extend({
  473. processBlock: function(e, a) {
  474. var b = this._cipher,
  475. c = b.blockSize;
  476. x.call(this, e, a, c);
  477. b.encryptBlock(e, a);
  478. this._prevBlock = e.slice(a, a + c)
  479. }
  480. });
  481. q.Decryptor = q.extend({
  482. processBlock: function(e, a) {
  483. var b = this._cipher,
  484. c = b.blockSize,
  485. d = e.slice(a, a + c);
  486. b.decryptBlock(e, a);
  487. x.call(this,
  488. e, a, c);
  489. this._prevBlock = d
  490. }
  491. });
  492. b = b.CBC = q;
  493. q = (p.pad = {}).Pkcs7 = {
  494. pad: function(a, b) {
  495. for(var c = 4 * b, c = c - a.sigBytes % c, d = c << 24 | c << 16 | c << 8 | c, l = [], n = 0; n < c; n += 4) l.push(d);
  496. c = s.create(l, c);
  497. a.concat(c)
  498. },
  499. unpad: function(a) {
  500. a.sigBytes -= a.words[a.sigBytes - 1 >>> 2] & 255
  501. }
  502. };
  503. d.BlockCipher = v.extend({
  504. cfg: v.cfg.extend({
  505. mode: b,
  506. padding: q
  507. }),
  508. reset: function() {
  509. v.reset.call(this);
  510. var a = this.cfg,
  511. b = a.iv,
  512. a = a.mode;
  513. if(this._xformMode == this._ENC_XFORM_MODE) var c = a.createEncryptor;
  514. else c = a.createDecryptor, this._minBufferSize = 1;
  515. this._mode = c.call(a,
  516. this, b && b.words)
  517. },
  518. _doProcessBlock: function(a, b) {
  519. this._mode.processBlock(a, b)
  520. },
  521. _doFinalize: function() {
  522. var a = this.cfg.padding;
  523. if(this._xformMode == this._ENC_XFORM_MODE) {
  524. a.pad(this._data, this.blockSize);
  525. var b = this._process(!0)
  526. } else b = this._process(!0), a.unpad(b);
  527. return b
  528. },
  529. blockSize: 4
  530. });
  531. var n = d.CipherParams = l.extend({
  532. init: function(a) {
  533. this.mixIn(a)
  534. },
  535. toString: function(a) {
  536. return(a || this.formatter).stringify(this)
  537. }
  538. }),
  539. b = (p.format = {}).OpenSSL = {
  540. stringify: function(a) {
  541. var b = a.ciphertext;
  542. a = a.salt;
  543. return(a ? s.create([1398893684,
  544. 1701076831
  545. ]).concat(a).concat(b) : b).toString(r)
  546. },
  547. parse: function(a) {
  548. a = r.parse(a);
  549. var b = a.words;
  550. if(1398893684 == b[0] && 1701076831 == b[1]) {
  551. var c = s.create(b.slice(2, 4));
  552. b.splice(0, 4);
  553. a.sigBytes -= 16
  554. }
  555. return n.create({
  556. ciphertext: a,
  557. salt: c
  558. })
  559. }
  560. },
  561. a = d.SerializableCipher = l.extend({
  562. cfg: l.extend({
  563. format: b
  564. }),
  565. encrypt: function(a, b, c, d) {
  566. d = this.cfg.extend(d);
  567. var l = a.createEncryptor(c, d);
  568. b = l.finalize(b);
  569. l = l.cfg;
  570. return n.create({
  571. ciphertext: b,
  572. key: c,
  573. iv: l.iv,
  574. algorithm: a,
  575. mode: l.mode,
  576. padding: l.padding,
  577. blockSize: a.blockSize,
  578. formatter: d.format
  579. })
  580. },
  581. decrypt: function(a, b, c, d) {
  582. d = this.cfg.extend(d);
  583. b = this._parse(b, d.format);
  584. return a.createDecryptor(c, d).finalize(b.ciphertext)
  585. },
  586. _parse: function(a, b) {
  587. return "string" == typeof a ? b.parse(a, this) : a
  588. }
  589. }),
  590. p = (p.kdf = {}).OpenSSL = {
  591. execute: function(a, b, c, d) {
  592. d || (d = s.random(8));
  593. a = w.create({
  594. keySize: b + c
  595. }).compute(a, d);
  596. c = s.create(a.words.slice(b), 4 * c);
  597. a.sigBytes = 4 * b;
  598. return n.create({
  599. key: a,
  600. iv: c,
  601. salt: d
  602. })
  603. }
  604. },
  605. c = d.PasswordBasedCipher = a.extend({
  606. cfg: a.cfg.extend({
  607. kdf: p
  608. }),
  609. encrypt: function(b, c, d, l) {
  610. l = this.cfg.extend(l);
  611. d = l.kdf.execute(d,
  612. b.keySize, b.ivSize);
  613. l.iv = d.iv;
  614. b = a.encrypt.call(this, b, c, d.key, l);
  615. b.mixIn(d);
  616. return b
  617. },
  618. decrypt: function(b, c, d, l) {
  619. l = this.cfg.extend(l);
  620. c = this._parse(c, l.format);
  621. d = l.kdf.execute(d, b.keySize, b.ivSize, c.salt);
  622. l.iv = d.iv;
  623. return a.decrypt.call(this, b, c, d.key, l)
  624. }
  625. })
  626. }();
  627. (function() {
  628. for(var u = CryptoJS, p = u.lib.BlockCipher, d = u.algo, l = [], s = [], t = [], r = [], w = [], v = [], b = [], x = [], q = [], n = [], a = [], c = 0; 256 > c; c++) a[c] = 128 > c ? c << 1 : c << 1 ^ 283;
  629. for(var e = 0, j = 0, c = 0; 256 > c; c++) {
  630. var k = j ^ j << 1 ^ j << 2 ^ j << 3 ^ j << 4,
  631. k = k >>> 8 ^ k & 255 ^ 99;
  632. l[e] = k;
  633. s[k] = e;
  634. var z = a[e],
  635. F = a[z],
  636. G = a[F],
  637. y = 257 * a[k] ^ 16843008 * k;
  638. t[e] = y << 24 | y >>> 8;
  639. r[e] = y << 16 | y >>> 16;
  640. w[e] = y << 8 | y >>> 24;
  641. v[e] = y;
  642. y = 16843009 * G ^ 65537 * F ^ 257 * z ^ 16843008 * e;
  643. b[k] = y << 24 | y >>> 8;
  644. x[k] = y << 16 | y >>> 16;
  645. q[k] = y << 8 | y >>> 24;
  646. n[k] = y;
  647. e ? (e = z ^ a[a[a[G ^ z]]], j ^= a[a[j]]) : e = j = 1
  648. }
  649. var H = [0, 1, 2, 4, 8,
  650. 16, 32, 64, 128, 27, 54
  651. ],
  652. d = d.AES = p.extend({
  653. _doReset: function() {
  654. for(var a = this._key, c = a.words, d = a.sigBytes / 4, a = 4 * ((this._nRounds = d + 6) + 1), e = this._keySchedule = [], j = 0; j < a; j++)
  655. if(j < d) e[j] = c[j];
  656. else {
  657. var k = e[j - 1];
  658. j % d ? 6 < d && 4 == j % d && (k = l[k >>> 24] << 24 | l[k >>> 16 & 255] << 16 | l[k >>> 8 & 255] << 8 | l[k & 255]) : (k = k << 8 | k >>> 24, k = l[k >>> 24] << 24 | l[k >>> 16 & 255] << 16 | l[k >>> 8 & 255] << 8 | l[k & 255], k ^= H[j / d | 0] << 24);
  659. e[j] = e[j - d] ^ k
  660. }
  661. c = this._invKeySchedule = [];
  662. for(d = 0; d < a; d++) j = a - d, k = d % 4 ? e[j] : e[j - 4], c[d] = 4 > d || 4 >= j ? k : b[l[k >>> 24]] ^ x[l[k >>> 16 & 255]] ^ q[l[k >>>
  663. 8 & 255]] ^ n[l[k & 255]]
  664. },
  665. encryptBlock: function(a, b) {
  666. this._doCryptBlock(a, b, this._keySchedule, t, r, w, v, l)
  667. },
  668. decryptBlock: function(a, c) {
  669. var d = a[c + 1];
  670. a[c + 1] = a[c + 3];
  671. a[c + 3] = d;
  672. this._doCryptBlock(a, c, this._invKeySchedule, b, x, q, n, s);
  673. d = a[c + 1];
  674. a[c + 1] = a[c + 3];
  675. a[c + 3] = d
  676. },
  677. _doCryptBlock: function(a, b, c, d, e, j, l, f) {
  678. for(var m = this._nRounds, g = a[b] ^ c[0], h = a[b + 1] ^ c[1], k = a[b + 2] ^ c[2], n = a[b + 3] ^ c[3], p = 4, r = 1; r < m; r++) var q = d[g >>> 24] ^ e[h >>> 16 & 255] ^ j[k >>> 8 & 255] ^ l[n & 255] ^ c[p++],
  679. s = d[h >>> 24] ^ e[k >>> 16 & 255] ^ j[n >>> 8 & 255] ^ l[g & 255] ^ c[p++],
  680. t =
  681. d[k >>> 24] ^ e[n >>> 16 & 255] ^ j[g >>> 8 & 255] ^ l[h & 255] ^ c[p++],
  682. n = d[n >>> 24] ^ e[g >>> 16 & 255] ^ j[h >>> 8 & 255] ^ l[k & 255] ^ c[p++],
  683. g = q,
  684. h = s,
  685. k = t;
  686. q = (f[g >>> 24] << 24 | f[h >>> 16 & 255] << 16 | f[k >>> 8 & 255] << 8 | f[n & 255]) ^ c[p++];
  687. s = (f[h >>> 24] << 24 | f[k >>> 16 & 255] << 16 | f[n >>> 8 & 255] << 8 | f[g & 255]) ^ c[p++];
  688. t = (f[k >>> 24] << 24 | f[n >>> 16 & 255] << 16 | f[g >>> 8 & 255] << 8 | f[h & 255]) ^ c[p++];
  689. n = (f[n >>> 24] << 24 | f[g >>> 16 & 255] << 16 | f[h >>> 8 & 255] << 8 | f[k & 255]) ^ c[p++];
  690. a[b] = q;
  691. a[b + 1] = s;
  692. a[b + 2] = t;
  693. a[b + 3] = n
  694. },
  695. keySize: 8
  696. });
  697. u.AES = p._createHelper(d)
  698. })();
  699. ! function(t, n) {
  700. "object" == typeof exports ? module.exports = exports = n() : "function" == typeof define && define.amd ? define([], n) : t.CryptoJS = n()
  701. }(this, function() {
  702. var t = t || function(t, n) {
  703. var i = Object.create || function() {
  704. function t() {}
  705. return function(n) {
  706. var i;
  707. return t.prototype = n, i = new t, t.prototype = null, i
  708. }
  709. }(),
  710. e = {},
  711. r = e.lib = {},
  712. o = r.Base = function() {
  713. return {
  714. extend: function(t) {
  715. var n = i(this);
  716. return t && n.mixIn(t), n.hasOwnProperty("init") && this.init !== n.init || (n.init = function() {
  717. n.$super.init.apply(this, arguments)
  718. }), n.init.prototype = n, n.$super = this, n
  719. },
  720. create: function() {
  721. var t = this.extend();
  722. return t.init.apply(t, arguments), t
  723. },
  724. init: function() {},
  725. mixIn: function(t) {
  726. for(var n in t) t.hasOwnProperty(n) && (this[n] = t[n]);
  727. t.hasOwnProperty("toString") && (this.toString = t.toString)
  728. },
  729. clone: function() {
  730. return this.init.prototype.extend(this)
  731. }
  732. }
  733. }(),
  734. s = r.WordArray = o.extend({
  735. init: function(t, i) {
  736. t = this.words = t || [], i != n ? this.sigBytes = i : this.sigBytes = 4 * t.length
  737. },
  738. toString: function(t) {
  739. return(t || c).stringify(this)
  740. },
  741. concat: function(t) {
  742. var n = this.words,
  743. i = t.words,
  744. e = this.sigBytes,
  745. r = t.sigBytes;
  746. if(this.clamp(), e % 4)
  747. for(var o = 0; o < r; o++) {
  748. var s = i[o >>> 2] >>> 24 - o % 4 * 8 & 255;
  749. n[e + o >>> 2] |= s << 24 - (e + o) % 4 * 8
  750. } else
  751. for(var o = 0; o < r; o += 4) n[e + o >>> 2] = i[o >>> 2];
  752. return this.sigBytes += r, this
  753. },
  754. clamp: function() {
  755. var n = this.words,
  756. i = this.sigBytes;
  757. n[i >>> 2] &= 4294967295 << 32 - i % 4 * 8, n.length = t.ceil(i / 4)
  758. },
  759. clone: function() {
  760. var t = o.clone.call(this);
  761. return t.words = this.words.slice(0), t
  762. },
  763. random: function(n) {
  764. for(var i, e = [], r = function(n) {
  765. var n = n,
  766. i = 987654321,
  767. e = 4294967295;
  768. return function() {
  769. i = 36969 * (65535 & i) + (i >> 16) & e, n = 18e3 * (65535 & n) + (n >> 16) & e;
  770. var r = (i << 16) + n & e;
  771. return r /= 4294967296, r += .5, r * (t.random() > .5 ? 1 : -1)
  772. }
  773. }, o = 0; o < n; o += 4) {
  774. var a = r(4294967296 * (i || t.random()));
  775. i = 987654071 * a(), e.push(4294967296 * a() | 0)
  776. }
  777. return new s.init(e, n)
  778. }
  779. }),
  780. a = e.enc = {},
  781. c = a.Hex = {
  782. stringify: function(t) {
  783. for(var n = t.words, i = t.sigBytes, e = [], r = 0; r < i; r++) {
  784. var o = n[r >>> 2] >>> 24 - r % 4 * 8 & 255;
  785. e.push((o >>> 4).toString(16)), e.push((15 & o).toString(16))
  786. }
  787. return e.join("")
  788. },
  789. parse: function(t) {
  790. for(var n = t.length, i = [], e = 0; e < n; e += 2) i[e >>> 3] |= parseInt(t.substr(e, 2), 16) << 24 - e % 8 * 4;
  791. return new s.init(i, n / 2)
  792. }
  793. },
  794. u = a.Latin1 = {
  795. stringify: function(t) {
  796. for(var n = t.words, i = t.sigBytes, e = [], r = 0; r < i; r++) {
  797. var o = n[r >>> 2] >>> 24 - r % 4 * 8 & 255;
  798. e.push(String.fromCharCode(o))
  799. }
  800. return e.join("")
  801. },
  802. parse: function(t) {
  803. for(var n = t.length, i = [], e = 0; e < n; e++) i[e >>> 2] |= (255 & t.charCodeAt(e)) << 24 - e % 4 * 8;
  804. return new s.init(i, n)
  805. }
  806. },
  807. f = a.Utf8 = {
  808. stringify: function(t) {
  809. try {
  810. return decodeURIComponent(escape(u.stringify(t)))
  811. } catch(t) {
  812. throw new Error("Malformed UTF-8 data")
  813. }
  814. },
  815. parse: function(t) {
  816. return u.parse(unescape(encodeURIComponent(t)))
  817. }
  818. },
  819. h = r.BufferedBlockAlgorithm = o.extend({
  820. reset: function() {
  821. this._data = new s.init, this._nDataBytes = 0
  822. },
  823. _append: function(t) {
  824. "string" == typeof t && (t = f.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes
  825. },
  826. _process: function(n) {
  827. var i = this._data,
  828. e = i.words,
  829. r = i.sigBytes,
  830. o = this.blockSize,
  831. a = 4 * o,
  832. c = r / a;
  833. c = n ? t.ceil(c) : t.max((0 | c) - this._minBufferSize, 0);
  834. var u = c * o,
  835. f = t.min(4 * u, r);
  836. if(u) {
  837. for(var h = 0; h < u; h += o) this._doProcessBlock(e, h);
  838. var p = e.splice(0, u);
  839. i.sigBytes -= f
  840. }
  841. return new s.init(p, f)
  842. },
  843. clone: function() {
  844. var t = o.clone.call(this);
  845. return t._data = this._data.clone(), t
  846. },
  847. _minBufferSize: 0
  848. }),
  849. p = (r.Hasher = h.extend({
  850. cfg: o.extend(),
  851. init: function(t) {
  852. this.cfg = this.cfg.extend(t), this.reset()
  853. },
  854. reset: function() {
  855. h.reset.call(this), this._doReset()
  856. },
  857. update: function(t) {
  858. return this._append(t), this._process(), this
  859. },
  860. finalize: function(t) {
  861. t && this._append(t);
  862. var n = this._doFinalize();
  863. return n
  864. },
  865. blockSize: 16,
  866. _createHelper: function(t) {
  867. return function(n, i) {
  868. return new t.init(i).finalize(n)
  869. }
  870. },
  871. _createHmacHelper: function(t) {
  872. return function(n, i) {
  873. return new p.HMAC.init(t, i).finalize(n)
  874. }
  875. }
  876. }), e.algo = {});
  877. return e
  878. }(Math);
  879. return t
  880. });
  881. //# sourceMappingURL=core.min.js.map
  882. ! function(e, t, i) {
  883. "object" == typeof exports ? module.exports = exports = t(require("./core.min"), require("./sha1.min"), require("./hmac.min")) : "function" == typeof define && define.amd ? define(["./core.min", "./sha1.min", "./hmac.min"], t) : t(e.CryptoJS)
  884. }(this, function(e) {
  885. return function() {
  886. var t = e,
  887. i = t.lib,
  888. r = i.Base,
  889. n = i.WordArray,
  890. o = t.algo,
  891. a = o.MD5,
  892. c = o.EvpKDF = r.extend({
  893. cfg: r.extend({
  894. keySize: 4,
  895. hasher: a,
  896. iterations: 1
  897. }),
  898. init: function(e) {
  899. this.cfg = this.cfg.extend(e)
  900. },
  901. compute: function(e, t) {
  902. for(var i = this.cfg, r = i.hasher.create(), o = n.create(), a = o.words, c = i.keySize, f = i.iterations; a.length < c;) {
  903. s && r.update(s);
  904. var s = r.update(e).finalize(t);
  905. r.reset();
  906. for(var u = 1; u < f; u++) s = r.finalize(s), r.reset();
  907. o.concat(s)
  908. }
  909. return o.sigBytes = 4 * c, o
  910. }
  911. });
  912. t.EvpKDF = function(e, t, i) {
  913. return c.create(i).compute(e, t)
  914. }
  915. }(), e.EvpKDF
  916. });
  917. //# sourceMappingURL=evpkdf.min.js.map
  918. ! function(r, e) {
  919. "object" == typeof exports ? module.exports = exports = e(require("./core.min")) : "function" == typeof define && define.amd ? define(["./core.min"], e) : e(r.CryptoJS)
  920. }(this, function(r) {
  921. return function() {
  922. function e(r, e, t) {
  923. for(var n = [], i = 0, o = 0; o < e; o++)
  924. if(o % 4) {
  925. var f = t[r.charCodeAt(o - 1)] << o % 4 * 2,
  926. c = t[r.charCodeAt(o)] >>> 6 - o % 4 * 2;
  927. n[i >>> 2] |= (f | c) << 24 - i % 4 * 8, i++
  928. }
  929. return a.create(n, i)
  930. }
  931. var t = r,
  932. n = t.lib,
  933. a = n.WordArray,
  934. i = t.enc;
  935. i.Base64 = {
  936. stringify: function(r) {
  937. var e = r.words,
  938. t = r.sigBytes,
  939. n = this._map;
  940. r.clamp();
  941. for(var a = [], i = 0; i < t; i += 3)
  942. for(var o = e[i >>> 2] >>> 24 - i % 4 * 8 & 255, f = e[i + 1 >>> 2] >>> 24 - (i + 1) % 4 * 8 & 255, c = e[i + 2 >>> 2] >>> 24 - (i + 2) % 4 * 8 & 255, s = o << 16 | f << 8 | c, h = 0; h < 4 && i + .75 * h < t; h++) a.push(n.charAt(s >>> 6 * (3 - h) & 63));
  943. var p = n.charAt(64);
  944. if(p)
  945. for(; a.length % 4;) a.push(p);
  946. return a.join("")
  947. },
  948. parse: function(r) {
  949. var t = r.length,
  950. n = this._map,
  951. a = this._reverseMap;
  952. if(!a) {
  953. a = this._reverseMap = [];
  954. for(var i = 0; i < n.length; i++) a[n.charCodeAt(i)] = i
  955. }
  956. var o = n.charAt(64);
  957. if(o) {
  958. var f = r.indexOf(o);
  959. f !== -1 && (t = f)
  960. }
  961. return e(r, t, a)
  962. },
  963. _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
  964. }
  965. }(), r.enc.Base64
  966. });
  967. //# sourceMappingURL=enc-base64.min.js.map
  968. ! function(e, t, r) {
  969. "object" == typeof exports ? module.exports = exports = t(require("./core.min"), require("./evpkdf.min")) : "function" == typeof define && define.amd ? define(["./core.min", "./evpkdf.min"], t) : t(e.CryptoJS)
  970. }(this, function(e) {
  971. e.lib.Cipher || function(t) {
  972. var r = e,
  973. i = r.lib,
  974. n = i.Base,
  975. c = i.WordArray,
  976. o = i.BufferedBlockAlgorithm,
  977. s = r.enc,
  978. a = (s.Utf8, s.Base64),
  979. f = r.algo,
  980. p = f.EvpKDF,
  981. d = i.Cipher = o.extend({
  982. cfg: n.extend(),
  983. createEncryptor: function(e, t) {
  984. return this.create(this._ENC_XFORM_MODE, e, t)
  985. },
  986. createDecryptor: function(e, t) {
  987. return this.create(this._DEC_XFORM_MODE, e, t)
  988. },
  989. init: function(e, t, r) {
  990. this.cfg = this.cfg.extend(r), this._xformMode = e, this._key = t, this.reset()
  991. },
  992. reset: function() {
  993. o.reset.call(this), this._doReset()
  994. },
  995. process: function(e) {
  996. return this._append(e), this._process()
  997. },
  998. finalize: function(e) {
  999. e && this._append(e);
  1000. var t = this._doFinalize();
  1001. return t
  1002. },
  1003. keySize: 4,
  1004. ivSize: 4,
  1005. _ENC_XFORM_MODE: 1,
  1006. _DEC_XFORM_MODE: 2,
  1007. _createHelper: function() {
  1008. function e(e) {
  1009. return "string" == typeof e ? B : x
  1010. }
  1011. return function(t) {
  1012. return {
  1013. encrypt: function(r, i, n) {
  1014. return e(i).encrypt(t, r, i, n)
  1015. },
  1016. decrypt: function(r, i, n) {
  1017. return e(i).decrypt(t, r, i, n)
  1018. }
  1019. }
  1020. }
  1021. }()
  1022. }),
  1023. h = (i.StreamCipher = d.extend({
  1024. _doFinalize: function() {
  1025. var e = this._process(!0);
  1026. return e
  1027. },
  1028. blockSize: 1
  1029. }), r.mode = {}),
  1030. u = i.BlockCipherMode = n.extend({
  1031. createEncryptor: function(e, t) {
  1032. return this.Encryptor.create(e, t)
  1033. },
  1034. createDecryptor: function(e, t) {
  1035. return this.Decryptor.create(e, t)
  1036. },
  1037. init: function(e, t) {
  1038. this._cipher = e, this._iv = t
  1039. }
  1040. }),
  1041. l = h.CBC = function() {
  1042. function e(e, r, i) {
  1043. var n = this._iv;
  1044. if(n) {
  1045. var c = n;
  1046. this._iv = t
  1047. } else var c = this._prevBlock;
  1048. for(var o = 0; o < i; o++) e[r + o] ^= c[o]
  1049. }
  1050. var r = u.extend();
  1051. return r.Encryptor = r.extend({
  1052. processBlock: function(t, r) {
  1053. var i = this._cipher,
  1054. n = i.blockSize;
  1055. e.call(this, t, r, n), i.encryptBlock(t, r), this._prevBlock = t.slice(r, r + n)
  1056. }
  1057. }), r.Decryptor = r.extend({
  1058. processBlock: function(t, r) {
  1059. var i = this._cipher,
  1060. n = i.blockSize,
  1061. c = t.slice(r, r + n);
  1062. i.decryptBlock(t, r), e.call(this, t, r, n), this._prevBlock = c
  1063. }
  1064. }), r
  1065. }(),
  1066. _ = r.pad = {},
  1067. v = _.Pkcs7 = {
  1068. pad: function(e, t) {
  1069. for(var r = 4 * t, i = r - e.sigBytes % r, n = i << 24 | i << 16 | i << 8 | i, o = [], s = 0; s < i; s += 4) o.push(n);
  1070. var a = c.create(o, i);
  1071. e.concat(a)
  1072. },
  1073. unpad: function(e) {
  1074. var t = 255 & e.words[e.sigBytes - 1 >>> 2];
  1075. e.sigBytes -= t
  1076. }
  1077. },
  1078. y = (i.BlockCipher = d.extend({
  1079. cfg: d.cfg.extend({
  1080. mode: l,
  1081. padding: v
  1082. }),
  1083. reset: function() {
  1084. d.reset.call(this);
  1085. var e = this.cfg,
  1086. t = e.iv,
  1087. r = e.mode;
  1088. if(this._xformMode == this._ENC_XFORM_MODE) var i = r.createEncryptor;
  1089. else {
  1090. var i = r.createDecryptor;
  1091. this._minBufferSize = 1
  1092. }
  1093. this._mode && this._mode.__creator == i ? this._mode.init(this, t && t.words) : (this._mode = i.call(r, this, t && t.words), this._mode.__creator = i)
  1094. },
  1095. _doProcessBlock: function(e, t) {
  1096. this._mode.processBlock(e, t)
  1097. },
  1098. _doFinalize: function() {
  1099. var e = this.cfg.padding;
  1100. if(this._xformMode == this._ENC_XFORM_MODE) {
  1101. e.pad(this._data, this.blockSize);
  1102. var t = this._process(!0)
  1103. } else {
  1104. var t = this._process(!0);
  1105. e.unpad(t)
  1106. }
  1107. return t
  1108. },
  1109. blockSize: 4
  1110. }), i.CipherParams = n.extend({
  1111. init: function(e) {
  1112. this.mixIn(e)
  1113. },
  1114. toString: function(e) {
  1115. return(e || this.formatter).stringify(this)
  1116. }
  1117. })),
  1118. m = r.format = {},
  1119. k = m.OpenSSL = {
  1120. stringify: function(e) {
  1121. var t = e.ciphertext,
  1122. r = e.salt;
  1123. if(r) var i = c.create([1398893684, 1701076831]).concat(r).concat(t);
  1124. else var i = t;
  1125. return i.toString(a)
  1126. },
  1127. parse: function(e) {
  1128. var t = a.parse(e),
  1129. r = t.words;
  1130. if(1398893684 == r[0] && 1701076831 == r[1]) {
  1131. var i = c.create(r.slice(2, 4));
  1132. r.splice(0, 4), t.sigBytes -= 16
  1133. }
  1134. return y.create({
  1135. ciphertext: t,
  1136. salt: i
  1137. })
  1138. }
  1139. },
  1140. x = i.SerializableCipher = n.extend({
  1141. cfg: n.extend({
  1142. format: k
  1143. }),
  1144. encrypt: function(e, t, r, i) {
  1145. i = this.cfg.extend(i);
  1146. var n = e.createEncryptor(r, i),
  1147. c = n.finalize(t),
  1148. o = n.cfg;
  1149. return y.create({
  1150. ciphertext: c,
  1151. key: r,
  1152. iv: o.iv,
  1153. algorithm: e,
  1154. mode: o.mode,
  1155. padding: o.padding,
  1156. blockSize: e.blockSize,
  1157. formatter: i.format
  1158. })
  1159. },
  1160. decrypt: function(e, t, r, i) {
  1161. i = this.cfg.extend(i), t = this._parse(t, i.format);
  1162. var n = e.createDecryptor(r, i).finalize(t.ciphertext);
  1163. return n
  1164. },
  1165. _parse: function(e, t) {
  1166. return "string" == typeof e ? t.parse(e, this) : e
  1167. }
  1168. }),
  1169. g = r.kdf = {},
  1170. S = g.OpenSSL = {
  1171. execute: function(e, t, r, i) {
  1172. i || (i = c.random(8));
  1173. var n = p.create({
  1174. keySize: t + r
  1175. }).compute(e, i),
  1176. o = c.create(n.words.slice(t), 4 * r);
  1177. return n.sigBytes = 4 * t, y.create({
  1178. key: n,
  1179. iv: o,
  1180. salt: i
  1181. })
  1182. }
  1183. },
  1184. B = i.PasswordBasedCipher = x.extend({
  1185. cfg: x.cfg.extend({
  1186. kdf: S
  1187. }),
  1188. encrypt: function(e, t, r, i) {
  1189. i = this.cfg.extend(i);
  1190. var n = i.kdf.execute(r, e.keySize, e.ivSize);
  1191. i.iv = n.iv;
  1192. var c = x.encrypt.call(this, e, t, n.key, i);
  1193. return c.mixIn(n), c
  1194. },
  1195. decrypt: function(e, t, r, i) {
  1196. i = this.cfg.extend(i), t = this._parse(t, i.format);
  1197. var n = i.kdf.execute(r, e.keySize, e.ivSize, t.salt);
  1198. i.iv = n.iv;
  1199. var c = x.decrypt.call(this, e, t, n.key, i);
  1200. return c
  1201. }
  1202. })
  1203. }()
  1204. });
  1205. //# sourceMappingURL=cipher-core.min.js.map
  1206. ! function(e, i) {
  1207. "object" == typeof exports ? module.exports = exports = i(require("./core.min")) : "function" == typeof define && define.amd ? define(["./core.min"], i) : i(e.CryptoJS)
  1208. }(this, function(e) {
  1209. ! function() {
  1210. var i = e,
  1211. t = i.lib,
  1212. n = t.Base,
  1213. s = i.enc,
  1214. r = s.Utf8,
  1215. o = i.algo;
  1216. o.HMAC = n.extend({
  1217. init: function(e, i) {
  1218. e = this._hasher = new e.init, "string" == typeof i && (i = r.parse(i));
  1219. var t = e.blockSize,
  1220. n = 4 * t;
  1221. i.sigBytes > n && (i = e.finalize(i)), i.clamp();
  1222. for(var s = this._oKey = i.clone(), o = this._iKey = i.clone(), a = s.words, f = o.words, c = 0; c < t; c++) a[c] ^= 1549556828, f[c] ^= 909522486;
  1223. s.sigBytes = o.sigBytes = n, this.reset()
  1224. },
  1225. reset: function() {
  1226. var e = this._hasher;
  1227. e.reset(), e.update(this._iKey)
  1228. },
  1229. update: function(e) {
  1230. return this._hasher.update(e), this
  1231. },
  1232. finalize: function(e) {
  1233. var i = this._hasher,
  1234. t = i.finalize(e);
  1235. i.reset();
  1236. var n = i.finalize(this._oKey.clone().concat(t));
  1237. return n
  1238. }
  1239. })
  1240. }()
  1241. });
  1242. //# sourceMappingURL=hmac.min.js.map
  1243. ! function(e, o, r) {
  1244. "object" == typeof exports ? module.exports = exports = o(require("./core.min"), require("./cipher-core.min")) : "function" == typeof define && define.amd ? define(["./core.min", "./cipher-core.min"], o) : o(e.CryptoJS)
  1245. }(this, function(e) {
  1246. return e.mode.ECB = function() {
  1247. var o = e.lib.BlockCipherMode.extend();
  1248. return o.Encryptor = o.extend({
  1249. processBlock: function(e, o) {
  1250. this._cipher.encryptBlock(e, o)
  1251. }
  1252. }), o.Decryptor = o.extend({
  1253. processBlock: function(e, o) {
  1254. this._cipher.decryptBlock(e, o)
  1255. }
  1256. }), o
  1257. }(), e.mode.ECB
  1258. });
  1259. //# sourceMappingURL=mode-ecb.min.js.map
  1260. ! function(e, r, i) {
  1261. "object" == typeof exports ? module.exports = exports = r(require("./core.min"), require("./cipher-core.min")) : "function" == typeof define && define.amd ? define(["./core.min", "./cipher-core.min"], r) : r(e.CryptoJS)
  1262. }(this, function(e) {
  1263. return e.pad.Pkcs7
  1264. });
  1265. //# sourceMappingURL=pad-pkcs7.min.js.map
  1266. ! function(e, r, i) {
  1267. "object" == typeof exports ? module.exports = exports = r(require("./core.min"), require("./enc-base64.min"), require("./md5.min"), require("./evpkdf.min"), require("./cipher-core.min")) : "function" == typeof define && define.amd ? define(["./core.min", "./enc-base64.min", "./md5.min", "./evpkdf.min", "./cipher-core.min"], r) : r(e.CryptoJS)
  1268. }(this, function(e) {
  1269. return function() {
  1270. var r = e,
  1271. i = r.lib,
  1272. n = i.BlockCipher,
  1273. o = r.algo,
  1274. t = [],
  1275. c = [],
  1276. s = [],
  1277. f = [],
  1278. a = [],
  1279. d = [],
  1280. u = [],
  1281. v = [],
  1282. h = [],
  1283. y = [];
  1284. ! function() {
  1285. for(var e = [], r = 0; r < 256; r++) r < 128 ? e[r] = r << 1 : e[r] = r << 1 ^ 283;
  1286. for(var i = 0, n = 0, r = 0; r < 256; r++) {
  1287. var o = n ^ n << 1 ^ n << 2 ^ n << 3 ^ n << 4;
  1288. o = o >>> 8 ^ 255 & o ^ 99, t[i] = o, c[o] = i;
  1289. var p = e[i],
  1290. l = e[p],
  1291. _ = e[l],
  1292. k = 257 * e[o] ^ 16843008 * o;
  1293. s[i] = k << 24 | k >>> 8, f[i] = k << 16 | k >>> 16, a[i] = k << 8 | k >>> 24, d[i] = k;
  1294. var k = 16843009 * _ ^ 65537 * l ^ 257 * p ^ 16843008 * i;
  1295. u[o] = k << 24 | k >>> 8, v[o] = k << 16 | k >>> 16, h[o] = k << 8 | k >>> 24, y[o] = k, i ? (i = p ^ e[e[e[_ ^ p]]], n ^= e[e[n]]) : i = n = 1
  1296. }
  1297. }();
  1298. var p = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54],
  1299. l = o.AES = n.extend({
  1300. _doReset: function() {
  1301. if(!this._nRounds || this._keyPriorReset !== this._key) {
  1302. for(var e = this._keyPriorReset = this._key, r = e.words, i = e.sigBytes / 4, n = this._nRounds = i + 6, o = 4 * (n + 1), c = this._keySchedule = [], s = 0; s < o; s++)
  1303. if(s < i) c[s] = r[s];
  1304. else {
  1305. var f = c[s - 1];
  1306. s % i ? i > 6 && s % i == 4 && (f = t[f >>> 24] << 24 | t[f >>> 16 & 255] << 16 | t[f >>> 8 & 255] << 8 | t[255 & f]) : (f = f << 8 | f >>> 24, f = t[f >>> 24] << 24 | t[f >>> 16 & 255] << 16 | t[f >>> 8 & 255] << 8 | t[255 & f], f ^= p[s / i | 0] << 24), c[s] = c[s - i] ^ f
  1307. }
  1308. for(var a = this._invKeySchedule = [], d = 0; d < o; d++) {
  1309. var s = o - d;
  1310. if(d % 4) var f = c[s];
  1311. else var f = c[s - 4];
  1312. d < 4 || s <= 4 ? a[d] = f : a[d] = u[t[f >>> 24]] ^ v[t[f >>> 16 & 255]] ^ h[t[f >>> 8 & 255]] ^ y[t[255 & f]]
  1313. }
  1314. }
  1315. },
  1316. encryptBlock: function(e, r) {
  1317. this._doCryptBlock(e, r, this._keySchedule, s, f, a, d, t)
  1318. },
  1319. decryptBlock: function(e, r) {
  1320. var i = e[r + 1];
  1321. e[r + 1] = e[r + 3], e[r + 3] = i, this._doCryptBlock(e, r, this._invKeySchedule, u, v, h, y, c);
  1322. var i = e[r + 1];
  1323. e[r + 1] = e[r + 3], e[r + 3] = i
  1324. },
  1325. _doCryptBlock: function(e, r, i, n, o, t, c, s) {
  1326. for(var f = this._nRounds, a = e[r] ^ i[0], d = e[r + 1] ^ i[1], u = e[r + 2] ^ i[2], v = e[r + 3] ^ i[3], h = 4, y = 1; y < f; y++) {
  1327. var p = n[a >>> 24] ^ o[d >>> 16 & 255] ^ t[u >>> 8 & 255] ^ c[255 & v] ^ i[h++],
  1328. l = n[d >>> 24] ^ o[u >>> 16 & 255] ^ t[v >>> 8 & 255] ^ c[255 & a] ^ i[h++],
  1329. _ = n[u >>> 24] ^ o[v >>> 16 & 255] ^ t[a >>> 8 & 255] ^ c[255 & d] ^ i[h++],
  1330. k = n[v >>> 24] ^ o[a >>> 16 & 255] ^ t[d >>> 8 & 255] ^ c[255 & u] ^ i[h++];
  1331. a = p, d = l, u = _, v = k
  1332. }
  1333. var p = (s[a >>> 24] << 24 | s[d >>> 16 & 255] << 16 | s[u >>> 8 & 255] << 8 | s[255 & v]) ^ i[h++],
  1334. l = (s[d >>> 24] << 24 | s[u >>> 16 & 255] << 16 | s[v >>> 8 & 255] << 8 | s[255 & a]) ^ i[h++],
  1335. _ = (s[u >>> 24] << 24 | s[v >>> 16 & 255] << 16 | s[a >>> 8 & 255] << 8 | s[255 & d]) ^ i[h++],
  1336. k = (s[v >>> 24] << 24 | s[a >>> 16 & 255] << 16 | s[d >>> 8 & 255] << 8 | s[255 & u]) ^ i[h++];
  1337. e[r] = p, e[r + 1] = l, e[r + 2] = _, e[r + 3] = k
  1338. },
  1339. keySize: 8
  1340. });
  1341. r.AES = n._createHelper(l)
  1342. }(), e.AES
  1343. });
  1344. //# sourceMappingURL=aes.min.js.map
  1345. ! function(e, n) {
  1346. "object" == typeof exports ? module.exports = exports = n(require("./core.min")) : "function" == typeof define && define.amd ? define(["./core.min"], n) : n(e.CryptoJS)
  1347. }(this, function(e) {
  1348. return e.enc.Utf8
  1349. });
  1350. //# sourceMappingURL=enc-utf8.min.js.map