爱简收旧衣按件回收前端代码仓库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

477 lines
17 KiB

  1. "use strict";
  2. var INPUT_ERROR = "input is invalid type";
  3. var FINALIZE_ERROR = "finalize already called";
  4. var HEX_CHARS = "0123456789abcdef".split("");
  5. var EXTRA = [128, 32768, 8388608, -2147483648];
  6. var SHIFT = [0, 8, 16, 24];
  7. var OUTPUT_TYPES = ["hex", "array", "digest", "buffer", "arrayBuffer", "base64"];
  8. var BASE64_ENCODE_CHAR = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");
  9. var blocks = [], buffer8;
  10. var ARRAY_BUFFER = typeof ArrayBuffer !== "undefined";
  11. if (ARRAY_BUFFER) {
  12. var buffer = new ArrayBuffer(68);
  13. buffer8 = new Uint8Array(buffer);
  14. blocks = new Uint32Array(buffer);
  15. }
  16. var isArray = Array.isArray;
  17. if (!isArray) {
  18. isArray = function(obj) {
  19. return Object.prototype.toString.call(obj) === "[object Array]";
  20. };
  21. }
  22. var isView = ArrayBuffer && ArrayBuffer.isView;
  23. if (ARRAY_BUFFER && !isView) {
  24. isView = function(obj) {
  25. return typeof obj === "object" && obj.buffer && obj.buffer.constructor === ArrayBuffer;
  26. };
  27. }
  28. var formatMessage = function(message) {
  29. var type = typeof message;
  30. if (type === "string") {
  31. return [message, true];
  32. }
  33. if (type !== "object" || message === null) {
  34. throw new Error(INPUT_ERROR);
  35. }
  36. if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {
  37. return [new Uint8Array(message), false];
  38. }
  39. if (!isArray(message) && !(ARRAY_BUFFER && isView(message))) {
  40. throw new Error(INPUT_ERROR);
  41. }
  42. return [message, false];
  43. };
  44. var createOutputMethod = function(outputType) {
  45. return function(message) {
  46. return new Md5(true).update(message)[outputType]();
  47. };
  48. };
  49. var createMethod = function() {
  50. var method = createOutputMethod("hex");
  51. method.create = function() {
  52. return new Md5();
  53. };
  54. method.update = function(message) {
  55. return method.create().update(message);
  56. };
  57. for (var i = 0; i < OUTPUT_TYPES.length; ++i) {
  58. var type = OUTPUT_TYPES[i];
  59. method[type] = createOutputMethod(type);
  60. }
  61. return method;
  62. };
  63. var createHmacOutputMethod = function(outputType) {
  64. return function(key, message) {
  65. return new HmacMd5(key, true).update(message)[outputType]();
  66. };
  67. };
  68. var createHmacMethod = function() {
  69. var method = createHmacOutputMethod("hex");
  70. method.create = function(key) {
  71. return new HmacMd5(key);
  72. };
  73. method.update = function(key, message) {
  74. return method.create(key).update(message);
  75. };
  76. for (var i = 0; i < OUTPUT_TYPES.length; ++i) {
  77. var type = OUTPUT_TYPES[i];
  78. method[type] = createHmacOutputMethod(type);
  79. }
  80. return method;
  81. };
  82. function Md5(sharedMemory) {
  83. if (sharedMemory) {
  84. blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;
  85. this.blocks = blocks;
  86. this.buffer8 = buffer8;
  87. } else {
  88. if (ARRAY_BUFFER) {
  89. var buffer = new ArrayBuffer(68);
  90. this.buffer8 = new Uint8Array(buffer);
  91. this.blocks = new Uint32Array(buffer);
  92. } else {
  93. this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  94. }
  95. }
  96. this.h0 = this.h1 = this.h2 = this.h3 = this.start = this.bytes = this.hBytes = 0;
  97. this.finalized = this.hashed = false;
  98. this.first = true;
  99. }
  100. Md5.prototype.update = function(message) {
  101. if (this.finalized) {
  102. throw new Error(FINALIZE_ERROR);
  103. }
  104. var result = formatMessage(message);
  105. message = result[0];
  106. var isString = result[1];
  107. var code, index = 0, i, length = message.length, blocks2 = this.blocks;
  108. var buffer82 = this.buffer8;
  109. while (index < length) {
  110. if (this.hashed) {
  111. this.hashed = false;
  112. blocks2[0] = blocks2[16];
  113. blocks2[16] = blocks2[1] = blocks2[2] = blocks2[3] = blocks2[4] = blocks2[5] = blocks2[6] = blocks2[7] = blocks2[8] = blocks2[9] = blocks2[10] = blocks2[11] = blocks2[12] = blocks2[13] = blocks2[14] = blocks2[15] = 0;
  114. }
  115. if (isString) {
  116. if (ARRAY_BUFFER) {
  117. for (i = this.start; index < length && i < 64; ++index) {
  118. code = message.charCodeAt(index);
  119. if (code < 128) {
  120. buffer82[i++] = code;
  121. } else if (code < 2048) {
  122. buffer82[i++] = 192 | code >>> 6;
  123. buffer82[i++] = 128 | code & 63;
  124. } else if (code < 55296 || code >= 57344) {
  125. buffer82[i++] = 224 | code >>> 12;
  126. buffer82[i++] = 128 | code >>> 6 & 63;
  127. buffer82[i++] = 128 | code & 63;
  128. } else {
  129. code = 65536 + ((code & 1023) << 10 | message.charCodeAt(++index) & 1023);
  130. buffer82[i++] = 240 | code >>> 18;
  131. buffer82[i++] = 128 | code >>> 12 & 63;
  132. buffer82[i++] = 128 | code >>> 6 & 63;
  133. buffer82[i++] = 128 | code & 63;
  134. }
  135. }
  136. } else {
  137. for (i = this.start; index < length && i < 64; ++index) {
  138. code = message.charCodeAt(index);
  139. if (code < 128) {
  140. blocks2[i >>> 2] |= code << SHIFT[i++ & 3];
  141. } else if (code < 2048) {
  142. blocks2[i >>> 2] |= (192 | code >>> 6) << SHIFT[i++ & 3];
  143. blocks2[i >>> 2] |= (128 | code & 63) << SHIFT[i++ & 3];
  144. } else if (code < 55296 || code >= 57344) {
  145. blocks2[i >>> 2] |= (224 | code >>> 12) << SHIFT[i++ & 3];
  146. blocks2[i >>> 2] |= (128 | code >>> 6 & 63) << SHIFT[i++ & 3];
  147. blocks2[i >>> 2] |= (128 | code & 63) << SHIFT[i++ & 3];
  148. } else {
  149. code = 65536 + ((code & 1023) << 10 | message.charCodeAt(++index) & 1023);
  150. blocks2[i >>> 2] |= (240 | code >>> 18) << SHIFT[i++ & 3];
  151. blocks2[i >>> 2] |= (128 | code >>> 12 & 63) << SHIFT[i++ & 3];
  152. blocks2[i >>> 2] |= (128 | code >>> 6 & 63) << SHIFT[i++ & 3];
  153. blocks2[i >>> 2] |= (128 | code & 63) << SHIFT[i++ & 3];
  154. }
  155. }
  156. }
  157. } else {
  158. if (ARRAY_BUFFER) {
  159. for (i = this.start; index < length && i < 64; ++index) {
  160. buffer82[i++] = message[index];
  161. }
  162. } else {
  163. for (i = this.start; index < length && i < 64; ++index) {
  164. blocks2[i >>> 2] |= message[index] << SHIFT[i++ & 3];
  165. }
  166. }
  167. }
  168. this.lastByteIndex = i;
  169. this.bytes += i - this.start;
  170. if (i >= 64) {
  171. this.start = i - 64;
  172. this.hash();
  173. this.hashed = true;
  174. } else {
  175. this.start = i;
  176. }
  177. }
  178. if (this.bytes > 4294967295) {
  179. this.hBytes += this.bytes / 4294967296 << 0;
  180. this.bytes = this.bytes % 4294967296;
  181. }
  182. return this;
  183. };
  184. Md5.prototype.finalize = function() {
  185. if (this.finalized) {
  186. return;
  187. }
  188. this.finalized = true;
  189. var blocks2 = this.blocks, i = this.lastByteIndex;
  190. blocks2[i >>> 2] |= EXTRA[i & 3];
  191. if (i >= 56) {
  192. if (!this.hashed) {
  193. this.hash();
  194. }
  195. blocks2[0] = blocks2[16];
  196. blocks2[16] = blocks2[1] = blocks2[2] = blocks2[3] = blocks2[4] = blocks2[5] = blocks2[6] = blocks2[7] = blocks2[8] = blocks2[9] = blocks2[10] = blocks2[11] = blocks2[12] = blocks2[13] = blocks2[14] = blocks2[15] = 0;
  197. }
  198. blocks2[14] = this.bytes << 3;
  199. blocks2[15] = this.hBytes << 3 | this.bytes >>> 29;
  200. this.hash();
  201. };
  202. Md5.prototype.hash = function() {
  203. var a, b, c, d, bc, da, blocks2 = this.blocks;
  204. if (this.first) {
  205. a = blocks2[0] - 680876937;
  206. a = (a << 7 | a >>> 25) - 271733879 << 0;
  207. d = (-1732584194 ^ a & 2004318071) + blocks2[1] - 117830708;
  208. d = (d << 12 | d >>> 20) + a << 0;
  209. c = (-271733879 ^ d & (a ^ -271733879)) + blocks2[2] - 1126478375;
  210. c = (c << 17 | c >>> 15) + d << 0;
  211. b = (a ^ c & (d ^ a)) + blocks2[3] - 1316259209;
  212. b = (b << 22 | b >>> 10) + c << 0;
  213. } else {
  214. a = this.h0;
  215. b = this.h1;
  216. c = this.h2;
  217. d = this.h3;
  218. a += (d ^ b & (c ^ d)) + blocks2[0] - 680876936;
  219. a = (a << 7 | a >>> 25) + b << 0;
  220. d += (c ^ a & (b ^ c)) + blocks2[1] - 389564586;
  221. d = (d << 12 | d >>> 20) + a << 0;
  222. c += (b ^ d & (a ^ b)) + blocks2[2] + 606105819;
  223. c = (c << 17 | c >>> 15) + d << 0;
  224. b += (a ^ c & (d ^ a)) + blocks2[3] - 1044525330;
  225. b = (b << 22 | b >>> 10) + c << 0;
  226. }
  227. a += (d ^ b & (c ^ d)) + blocks2[4] - 176418897;
  228. a = (a << 7 | a >>> 25) + b << 0;
  229. d += (c ^ a & (b ^ c)) + blocks2[5] + 1200080426;
  230. d = (d << 12 | d >>> 20) + a << 0;
  231. c += (b ^ d & (a ^ b)) + blocks2[6] - 1473231341;
  232. c = (c << 17 | c >>> 15) + d << 0;
  233. b += (a ^ c & (d ^ a)) + blocks2[7] - 45705983;
  234. b = (b << 22 | b >>> 10) + c << 0;
  235. a += (d ^ b & (c ^ d)) + blocks2[8] + 1770035416;
  236. a = (a << 7 | a >>> 25) + b << 0;
  237. d += (c ^ a & (b ^ c)) + blocks2[9] - 1958414417;
  238. d = (d << 12 | d >>> 20) + a << 0;
  239. c += (b ^ d & (a ^ b)) + blocks2[10] - 42063;
  240. c = (c << 17 | c >>> 15) + d << 0;
  241. b += (a ^ c & (d ^ a)) + blocks2[11] - 1990404162;
  242. b = (b << 22 | b >>> 10) + c << 0;
  243. a += (d ^ b & (c ^ d)) + blocks2[12] + 1804603682;
  244. a = (a << 7 | a >>> 25) + b << 0;
  245. d += (c ^ a & (b ^ c)) + blocks2[13] - 40341101;
  246. d = (d << 12 | d >>> 20) + a << 0;
  247. c += (b ^ d & (a ^ b)) + blocks2[14] - 1502002290;
  248. c = (c << 17 | c >>> 15) + d << 0;
  249. b += (a ^ c & (d ^ a)) + blocks2[15] + 1236535329;
  250. b = (b << 22 | b >>> 10) + c << 0;
  251. a += (c ^ d & (b ^ c)) + blocks2[1] - 165796510;
  252. a = (a << 5 | a >>> 27) + b << 0;
  253. d += (b ^ c & (a ^ b)) + blocks2[6] - 1069501632;
  254. d = (d << 9 | d >>> 23) + a << 0;
  255. c += (a ^ b & (d ^ a)) + blocks2[11] + 643717713;
  256. c = (c << 14 | c >>> 18) + d << 0;
  257. b += (d ^ a & (c ^ d)) + blocks2[0] - 373897302;
  258. b = (b << 20 | b >>> 12) + c << 0;
  259. a += (c ^ d & (b ^ c)) + blocks2[5] - 701558691;
  260. a = (a << 5 | a >>> 27) + b << 0;
  261. d += (b ^ c & (a ^ b)) + blocks2[10] + 38016083;
  262. d = (d << 9 | d >>> 23) + a << 0;
  263. c += (a ^ b & (d ^ a)) + blocks2[15] - 660478335;
  264. c = (c << 14 | c >>> 18) + d << 0;
  265. b += (d ^ c & (d ^ a)) + blocks2[4] - 405537848;
  266. b = (b << 20 | b >>> 12) + c << 0;
  267. a += (c ^ d & (b ^ c)) + blocks2[9] + 568446438;
  268. a = (a << 5 | a >>> 27) + b << 0;
  269. d += (b ^ a & (c ^ b)) + blocks2[14] - 1019803690;
  270. d = (d << 9 | d >>> 23) + a << 0;
  271. c += (a ^ b & (d ^ a)) + blocks2[3] - 187363961;
  272. c = (c << 14 | c >>> 18) + d << 0;
  273. b += (d ^ c & (d ^ a)) + blocks2[8] + 1163531501;
  274. b = (b << 20 | b >>> 12) + c << 0;
  275. a += (c ^ d & (b ^ c)) + blocks2[13] - 1444681467;
  276. a = (a << 5 | a >>> 27) + b << 0;
  277. d += (b ^ c & (a ^ b)) + blocks2[2] - 51403784;
  278. d = (d << 9 | d >>> 23) + a << 0;
  279. c += (a ^ b & (d ^ a)) + blocks2[7] + 1735328473;
  280. c = (c << 14 | c >>> 18) + d << 0;
  281. b += (d ^ c & (d ^ a)) + blocks2[12] - 1926607734;
  282. b = (b << 20 | b >>> 12) + c << 0;
  283. bc = b ^ c;
  284. a += (bc ^ d) + blocks2[5] - 378558;
  285. a = (a << 4 | a >>> 28) + b << 0;
  286. d += (bc ^ a) + blocks2[8] - 2022574463;
  287. d = (d << 11 | d >>> 21) + a << 0;
  288. da = d ^ a;
  289. c += (da ^ b) + blocks2[11] + 1839030562;
  290. c = (c << 16 | c >>> 16) + d << 0;
  291. b += (da ^ c) + blocks2[14] - 35309556;
  292. b = (b << 23 | b >>> 9) + c << 0;
  293. bc = b ^ c;
  294. a += (bc ^ d) + blocks2[1] - 1530992060;
  295. a = (a << 4 | a >>> 28) + b << 0;
  296. d += (bc ^ a) + blocks2[4] + 1272893353;
  297. d = (d << 11 | d >>> 21) + a << 0;
  298. da = d ^ a;
  299. c += (da ^ b) + blocks2[7] - 155497632;
  300. c = (c << 16 | c >>> 16) + d << 0;
  301. b += (da ^ c) + blocks2[10] - 1094730640;
  302. b = (b << 23 | b >>> 9) + c << 0;
  303. bc = b ^ c;
  304. a += (bc ^ d) + blocks2[13] + 681279174;
  305. a = (a << 4 | a >>> 28) + b << 0;
  306. d += (bc ^ a) + blocks2[0] - 358537222;
  307. d = (d << 11 | d >>> 21) + a << 0;
  308. da = d ^ a;
  309. c += (da ^ b) + blocks2[3] - 722521979;
  310. c = (c << 16 | c >>> 16) + d << 0;
  311. b += (da ^ c) + blocks2[6] + 76029189;
  312. b = (b << 23 | b >>> 9) + c << 0;
  313. bc = b ^ c;
  314. a += (bc ^ d) + blocks2[9] - 640364487;
  315. a = (a << 4 | a >>> 28) + b << 0;
  316. d += (bc ^ a) + blocks2[12] - 421815835;
  317. d = (d << 11 | d >>> 21) + a << 0;
  318. da = d ^ a;
  319. c += (da ^ b) + blocks2[15] + 530742520;
  320. c = (c << 16 | c >>> 16) + d << 0;
  321. b += (da ^ c) + blocks2[2] - 995338651;
  322. b = (b << 23 | b >>> 9) + c << 0;
  323. a += (c ^ (b | ~d)) + blocks2[0] - 198630844;
  324. a = (a << 6 | a >>> 26) + b << 0;
  325. d += (b ^ (a | ~c)) + blocks2[7] + 1126891415;
  326. d = (d << 10 | d >>> 22) + a << 0;
  327. c += (a ^ (d | ~b)) + blocks2[14] - 1416354905;
  328. c = (c << 15 | c >>> 17) + d << 0;
  329. b += (d ^ (c | ~a)) + blocks2[5] - 57434055;
  330. b = (b << 21 | b >>> 11) + c << 0;
  331. a += (c ^ (b | ~d)) + blocks2[12] + 1700485571;
  332. a = (a << 6 | a >>> 26) + b << 0;
  333. d += (b ^ (a | ~c)) + blocks2[3] - 1894986606;
  334. d = (d << 10 | d >>> 22) + a << 0;
  335. c += (a ^ (d | ~b)) + blocks2[10] - 1051523;
  336. c = (c << 15 | c >>> 17) + d << 0;
  337. b += (d ^ (c | ~a)) + blocks2[1] - 2054922799;
  338. b = (b << 21 | b >>> 11) + c << 0;
  339. a += (c ^ (b | ~d)) + blocks2[8] + 1873313359;
  340. a = (a << 6 | a >>> 26) + b << 0;
  341. d += (b ^ (a | ~c)) + blocks2[15] - 30611744;
  342. d = (d << 10 | d >>> 22) + a << 0;
  343. c += (a ^ (d | ~b)) + blocks2[6] - 1560198380;
  344. c = (c << 15 | c >>> 17) + d << 0;
  345. b += (d ^ (c | ~a)) + blocks2[13] + 1309151649;
  346. b = (b << 21 | b >>> 11) + c << 0;
  347. a += (c ^ (b | ~d)) + blocks2[4] - 145523070;
  348. a = (a << 6 | a >>> 26) + b << 0;
  349. d += (b ^ (a | ~c)) + blocks2[11] - 1120210379;
  350. d = (d << 10 | d >>> 22) + a << 0;
  351. c += (a ^ (d | ~b)) + blocks2[2] + 718787259;
  352. c = (c << 15 | c >>> 17) + d << 0;
  353. b += (d ^ (c | ~a)) + blocks2[9] - 343485551;
  354. b = (b << 21 | b >>> 11) + c << 0;
  355. if (this.first) {
  356. this.h0 = a + 1732584193 << 0;
  357. this.h1 = b - 271733879 << 0;
  358. this.h2 = c - 1732584194 << 0;
  359. this.h3 = d + 271733878 << 0;
  360. this.first = false;
  361. } else {
  362. this.h0 = this.h0 + a << 0;
  363. this.h1 = this.h1 + b << 0;
  364. this.h2 = this.h2 + c << 0;
  365. this.h3 = this.h3 + d << 0;
  366. }
  367. };
  368. Md5.prototype.hex = function() {
  369. this.finalize();
  370. var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3;
  371. return HEX_CHARS[h0 >>> 4 & 15] + HEX_CHARS[h0 & 15] + HEX_CHARS[h0 >>> 12 & 15] + HEX_CHARS[h0 >>> 8 & 15] + HEX_CHARS[h0 >>> 20 & 15] + HEX_CHARS[h0 >>> 16 & 15] + HEX_CHARS[h0 >>> 28 & 15] + HEX_CHARS[h0 >>> 24 & 15] + HEX_CHARS[h1 >>> 4 & 15] + HEX_CHARS[h1 & 15] + HEX_CHARS[h1 >>> 12 & 15] + HEX_CHARS[h1 >>> 8 & 15] + HEX_CHARS[h1 >>> 20 & 15] + HEX_CHARS[h1 >>> 16 & 15] + HEX_CHARS[h1 >>> 28 & 15] + HEX_CHARS[h1 >>> 24 & 15] + HEX_CHARS[h2 >>> 4 & 15] + HEX_CHARS[h2 & 15] + HEX_CHARS[h2 >>> 12 & 15] + HEX_CHARS[h2 >>> 8 & 15] + HEX_CHARS[h2 >>> 20 & 15] + HEX_CHARS[h2 >>> 16 & 15] + HEX_CHARS[h2 >>> 28 & 15] + HEX_CHARS[h2 >>> 24 & 15] + HEX_CHARS[h3 >>> 4 & 15] + HEX_CHARS[h3 & 15] + HEX_CHARS[h3 >>> 12 & 15] + HEX_CHARS[h3 >>> 8 & 15] + HEX_CHARS[h3 >>> 20 & 15] + HEX_CHARS[h3 >>> 16 & 15] + HEX_CHARS[h3 >>> 28 & 15] + HEX_CHARS[h3 >>> 24 & 15];
  372. };
  373. Md5.prototype.toString = Md5.prototype.hex;
  374. Md5.prototype.digest = function() {
  375. this.finalize();
  376. var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3;
  377. return [
  378. h0 & 255,
  379. h0 >>> 8 & 255,
  380. h0 >>> 16 & 255,
  381. h0 >>> 24 & 255,
  382. h1 & 255,
  383. h1 >>> 8 & 255,
  384. h1 >>> 16 & 255,
  385. h1 >>> 24 & 255,
  386. h2 & 255,
  387. h2 >>> 8 & 255,
  388. h2 >>> 16 & 255,
  389. h2 >>> 24 & 255,
  390. h3 & 255,
  391. h3 >>> 8 & 255,
  392. h3 >>> 16 & 255,
  393. h3 >>> 24 & 255
  394. ];
  395. };
  396. Md5.prototype.array = Md5.prototype.digest;
  397. Md5.prototype.arrayBuffer = function() {
  398. this.finalize();
  399. var buffer = new ArrayBuffer(16);
  400. var blocks2 = new Uint32Array(buffer);
  401. blocks2[0] = this.h0;
  402. blocks2[1] = this.h1;
  403. blocks2[2] = this.h2;
  404. blocks2[3] = this.h3;
  405. return buffer;
  406. };
  407. Md5.prototype.buffer = Md5.prototype.arrayBuffer;
  408. Md5.prototype.base64 = function() {
  409. var v1, v2, v3, base64Str = "", bytes = this.array();
  410. for (var i = 0; i < 15; ) {
  411. v1 = bytes[i++];
  412. v2 = bytes[i++];
  413. v3 = bytes[i++];
  414. base64Str += BASE64_ENCODE_CHAR[v1 >>> 2] + BASE64_ENCODE_CHAR[(v1 << 4 | v2 >>> 4) & 63] + BASE64_ENCODE_CHAR[(v2 << 2 | v3 >>> 6) & 63] + BASE64_ENCODE_CHAR[v3 & 63];
  415. }
  416. v1 = bytes[i];
  417. base64Str += BASE64_ENCODE_CHAR[v1 >>> 2] + BASE64_ENCODE_CHAR[v1 << 4 & 63] + "==";
  418. return base64Str;
  419. };
  420. function HmacMd5(key, sharedMemory) {
  421. var i, result = formatMessage(key);
  422. key = result[0];
  423. if (result[1]) {
  424. var bytes = [], length = key.length, index = 0, code;
  425. for (i = 0; i < length; ++i) {
  426. code = key.charCodeAt(i);
  427. if (code < 128) {
  428. bytes[index++] = code;
  429. } else if (code < 2048) {
  430. bytes[index++] = 192 | code >>> 6;
  431. bytes[index++] = 128 | code & 63;
  432. } else if (code < 55296 || code >= 57344) {
  433. bytes[index++] = 224 | code >>> 12;
  434. bytes[index++] = 128 | code >>> 6 & 63;
  435. bytes[index++] = 128 | code & 63;
  436. } else {
  437. code = 65536 + ((code & 1023) << 10 | key.charCodeAt(++i) & 1023);
  438. bytes[index++] = 240 | code >>> 18;
  439. bytes[index++] = 128 | code >>> 12 & 63;
  440. bytes[index++] = 128 | code >>> 6 & 63;
  441. bytes[index++] = 128 | code & 63;
  442. }
  443. }
  444. key = bytes;
  445. }
  446. if (key.length > 64) {
  447. key = new Md5(true).update(key).array();
  448. }
  449. var oKeyPad = [], iKeyPad = [];
  450. for (i = 0; i < 64; ++i) {
  451. var b = key[i] || 0;
  452. oKeyPad[i] = 92 ^ b;
  453. iKeyPad[i] = 54 ^ b;
  454. }
  455. Md5.call(this, sharedMemory);
  456. this.update(iKeyPad);
  457. this.oKeyPad = oKeyPad;
  458. this.inner = true;
  459. this.sharedMemory = sharedMemory;
  460. }
  461. HmacMd5.prototype = new Md5();
  462. HmacMd5.prototype.finalize = function() {
  463. Md5.prototype.finalize.call(this);
  464. if (this.inner) {
  465. this.inner = false;
  466. var innerHash = this.array();
  467. Md5.call(this, this.sharedMemory);
  468. this.update(this.oKeyPad);
  469. this.update(innerHash);
  470. Md5.prototype.finalize.call(this);
  471. }
  472. };
  473. var exports$1 = createMethod();
  474. exports$1.md5 = exports$1;
  475. exports$1.hmac = createHmacMethod();
  476. exports.exports = exports$1;
  477. //# sourceMappingURL=../../../.sourcemap/mp-weixin/utils/lib/md5.js.map