crypto-es
Version:
A cryptography algorithms library compatible with ES6 and TypeScript
1 lines • 13.8 kB
Source Map (JSON)
{"version":3,"file":"md5.cjs","names":["T: number[]","Hasher32","WordArray","MD5: HashFn","Hasher","HmacMD5: HMACHashFn"],"sources":["../src/md5.ts"],"sourcesContent":["import {\n WordArray,\n Hasher,\n Hasher32,\n HashFn,\n HMACHashFn,\n} from './core';\n\n// Constants table\nconst T: number[] = [];\n\n// Compute constants\nfor (let i = 0; i < 64; i += 1) {\n T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n}\n\n/**\n * MD5 round function F\n */\nconst FF = (a: number, b: number, c: number, d: number, x: number, s: number, t: number): number => {\n const n = a + ((b & c) | (~b & d)) + x + t;\n return ((n << s) | (n >>> (32 - s))) + b;\n};\n\n/**\n * MD5 round function G\n */\nconst GG = (a: number, b: number, c: number, d: number, x: number, s: number, t: number): number => {\n const n = a + ((b & d) | (c & ~d)) + x + t;\n return ((n << s) | (n >>> (32 - s))) + b;\n};\n\n/**\n * MD5 round function H\n */\nconst HH = (a: number, b: number, c: number, d: number, x: number, s: number, t: number): number => {\n const n = a + (b ^ c ^ d) + x + t;\n return ((n << s) | (n >>> (32 - s))) + b;\n};\n\n/**\n * MD5 round function I\n */\nconst II = (a: number, b: number, c: number, d: number, x: number, s: number, t: number): number => {\n const n = a + (c ^ (b | ~d)) + x + t;\n return ((n << s) | (n >>> (32 - s))) + b;\n};\n\n/**\n * MD5 hash algorithm.\n */\nexport class MD5Algo extends Hasher32 {\n _doReset(): void {\n this._hash = new WordArray([\n 0x67452301,\n 0xefcdab89,\n 0x98badcfe,\n 0x10325476,\n ]);\n }\n\n _doProcessBlock(M: number[], offset: number): void {\n const _M = M;\n\n // Swap endian\n for (let i = 0; i < 16; i += 1) {\n // Shortcuts\n const offset_i = offset + i;\n const M_offset_i = M[offset_i];\n\n _M[offset_i] = (\n (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff)\n | (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n );\n }\n\n // Shortcuts\n const H = this._hash.words;\n\n const M_offset_0 = _M[offset + 0];\n const M_offset_1 = _M[offset + 1];\n const M_offset_2 = _M[offset + 2];\n const M_offset_3 = _M[offset + 3];\n const M_offset_4 = _M[offset + 4];\n const M_offset_5 = _M[offset + 5];\n const M_offset_6 = _M[offset + 6];\n const M_offset_7 = _M[offset + 7];\n const M_offset_8 = _M[offset + 8];\n const M_offset_9 = _M[offset + 9];\n const M_offset_10 = _M[offset + 10];\n const M_offset_11 = _M[offset + 11];\n const M_offset_12 = _M[offset + 12];\n const M_offset_13 = _M[offset + 13];\n const M_offset_14 = _M[offset + 14];\n const M_offset_15 = _M[offset + 15];\n\n // Working variables\n let a = H[0];\n let b = H[1];\n let c = H[2];\n let d = H[3];\n\n // Computation\n a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\n a = II(a, b, c, d, M_offset_0, 6, T[48]);\n d = II(d, a, b, c, M_offset_7, 10, T[49]);\n c = II(c, d, a, b, M_offset_14, 15, T[50]);\n b = II(b, c, d, a, M_offset_5, 21, T[51]);\n a = II(a, b, c, d, M_offset_12, 6, T[52]);\n d = II(d, a, b, c, M_offset_3, 10, T[53]);\n c = II(c, d, a, b, M_offset_10, 15, T[54]);\n b = II(b, c, d, a, M_offset_1, 21, T[55]);\n a = II(a, b, c, d, M_offset_8, 6, T[56]);\n d = II(d, a, b, c, M_offset_15, 10, T[57]);\n c = II(c, d, a, b, M_offset_6, 15, T[58]);\n b = II(b, c, d, a, M_offset_13, 21, T[59]);\n a = II(a, b, c, d, M_offset_4, 6, T[60]);\n d = II(d, a, b, c, M_offset_11, 10, T[61]);\n c = II(c, d, a, b, M_offset_2, 15, T[62]);\n b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\n // Intermediate hash value\n H[0] = (H[0] + a) | 0;\n H[1] = (H[1] + b) | 0;\n H[2] = (H[2] + c) | 0;\n H[3] = (H[3] + d) | 0;\n }\n\n _doFinalize(): WordArray {\n // Shortcuts\n const data = this._data;\n const dataWords = data.words;\n\n const nBitsTotal = this._nDataBytes * 8;\n const nBitsLeft = data.sigBytes * 8;\n\n // Add padding\n dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - (nBitsLeft % 32));\n\n const nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n const nBitsTotalL = nBitsTotal;\n dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff)\n | (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n );\n dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff)\n | (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n );\n\n data.sigBytes = (dataWords.length + 1) * 4;\n\n // Hash final blocks\n this._process();\n\n // Shortcuts\n const hash = this._hash;\n const H = hash.words;\n\n // Swap endian\n for (let i = 0; i < 4; i += 1) {\n // Shortcut\n const H_i = H[i];\n\n H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff)\n | (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n }\n\n // Return final computed hash\n return hash;\n }\n\n clone(): this {\n const clone = super.clone.call(this);\n clone._hash = this._hash.clone();\n\n return clone;\n }\n}\n\n/**\n * Shortcut function to the hasher's object interface.\n *\n * @param message - The message to hash.\n * @returns The hash.\n *\n * @example\n * ```js\n * const hash = CryptoJS.MD5('message');\n * const hash = CryptoJS.MD5(wordArray);\n * ```\n */\nexport const MD5: HashFn = Hasher._createHelper(MD5Algo);\n\n/**\n * Shortcut function to the HMAC's object interface.\n *\n * @param message - The message to hash.\n * @param key - The secret key.\n * @returns The HMAC.\n *\n * @example\n * ```js\n * const hmac = CryptoJS.HmacMD5(message, key);\n * ```\n */\nexport const HmacMD5: HMACHashFn = Hasher._createHmacHelper(MD5Algo);"],"mappings":"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"}