|
17 | 17 | * See http://pajhome.org.uk/crypt/md5 for more info. |
18 | 18 | */ |
19 | 19 |
|
20 | | -/*global unescape, define, module */ |
| 20 | +/* global define */ |
21 | 21 |
|
22 | 22 | ;(function ($) { |
23 | 23 | 'use strict' |
|
26 | 26 | * Add integers, wrapping at 2^32. This uses 16-bit operations internally |
27 | 27 | * to work around bugs in some JS interpreters. |
28 | 28 | */ |
29 | | - function safe_add (x, y) { |
| 29 | + function safeAdd (x, y) { |
30 | 30 | var lsw = (x & 0xFFFF) + (y & 0xFFFF) |
31 | 31 | var msw = (x >> 16) + (y >> 16) + (lsw >> 16) |
32 | 32 | return (msw << 16) | (lsw & 0xFFFF) |
|
35 | 35 | /* |
36 | 36 | * Bitwise rotate a 32-bit number to the left. |
37 | 37 | */ |
38 | | - function bit_rol (num, cnt) { |
| 38 | + function bitRotateLeft (num, cnt) { |
39 | 39 | return (num << cnt) | (num >>> (32 - cnt)) |
40 | 40 | } |
41 | 41 |
|
42 | 42 | /* |
43 | 43 | * These functions implement the four basic operations the algorithm uses. |
44 | 44 | */ |
45 | | - function md5_cmn (q, a, b, x, s, t) { |
46 | | - return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b) |
| 45 | + function md5cmn (q, a, b, x, s, t) { |
| 46 | + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b) |
47 | 47 | } |
48 | | - function md5_ff (a, b, c, d, x, s, t) { |
49 | | - return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t) |
| 48 | + function md5ff (a, b, c, d, x, s, t) { |
| 49 | + return md5cmn((b & c) | ((~b) & d), a, b, x, s, t) |
50 | 50 | } |
51 | | - function md5_gg (a, b, c, d, x, s, t) { |
52 | | - return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t) |
| 51 | + function md5gg (a, b, c, d, x, s, t) { |
| 52 | + return md5cmn((b & d) | (c & (~d)), a, b, x, s, t) |
53 | 53 | } |
54 | | - function md5_hh (a, b, c, d, x, s, t) { |
55 | | - return md5_cmn(b ^ c ^ d, a, b, x, s, t) |
| 54 | + function md5hh (a, b, c, d, x, s, t) { |
| 55 | + return md5cmn(b ^ c ^ d, a, b, x, s, t) |
56 | 56 | } |
57 | | - function md5_ii (a, b, c, d, x, s, t) { |
58 | | - return md5_cmn(c ^ (b | (~d)), a, b, x, s, t) |
| 57 | + function md5ii (a, b, c, d, x, s, t) { |
| 58 | + return md5cmn(c ^ (b | (~d)), a, b, x, s, t) |
59 | 59 | } |
60 | 60 |
|
61 | 61 | /* |
62 | 62 | * Calculate the MD5 of an array of little-endian words, and a bit length. |
63 | 63 | */ |
64 | | - function binl_md5 (x, len) { |
| 64 | + function binlMD5 (x, len) { |
65 | 65 | /* append padding */ |
66 | 66 | x[len >> 5] |= 0x80 << (len % 32) |
67 | 67 | x[(((len + 64) >>> 9) << 4) + 14] = len |
|
82 | 82 | oldc = c |
83 | 83 | oldd = d |
84 | 84 |
|
85 | | - a = md5_ff(a, b, c, d, x[i], 7, -680876936) |
86 | | - d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586) |
87 | | - c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819) |
88 | | - b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330) |
89 | | - a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897) |
90 | | - d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426) |
91 | | - c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341) |
92 | | - b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983) |
93 | | - a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416) |
94 | | - d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417) |
95 | | - c = md5_ff(c, d, a, b, x[i + 10], 17, -42063) |
96 | | - b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162) |
97 | | - a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682) |
98 | | - d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101) |
99 | | - c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290) |
100 | | - b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329) |
| 85 | + a = md5ff(a, b, c, d, x[i], 7, -680876936) |
| 86 | + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586) |
| 87 | + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819) |
| 88 | + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330) |
| 89 | + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897) |
| 90 | + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426) |
| 91 | + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341) |
| 92 | + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983) |
| 93 | + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416) |
| 94 | + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417) |
| 95 | + c = md5ff(c, d, a, b, x[i + 10], 17, -42063) |
| 96 | + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162) |
| 97 | + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682) |
| 98 | + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101) |
| 99 | + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290) |
| 100 | + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329) |
101 | 101 |
|
102 | | - a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510) |
103 | | - d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632) |
104 | | - c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713) |
105 | | - b = md5_gg(b, c, d, a, x[i], 20, -373897302) |
106 | | - a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691) |
107 | | - d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083) |
108 | | - c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335) |
109 | | - b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848) |
110 | | - a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438) |
111 | | - d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690) |
112 | | - c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961) |
113 | | - b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501) |
114 | | - a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467) |
115 | | - d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784) |
116 | | - c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473) |
117 | | - b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734) |
| 102 | + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510) |
| 103 | + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632) |
| 104 | + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713) |
| 105 | + b = md5gg(b, c, d, a, x[i], 20, -373897302) |
| 106 | + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691) |
| 107 | + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083) |
| 108 | + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335) |
| 109 | + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848) |
| 110 | + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438) |
| 111 | + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690) |
| 112 | + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961) |
| 113 | + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501) |
| 114 | + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467) |
| 115 | + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784) |
| 116 | + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473) |
| 117 | + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734) |
118 | 118 |
|
119 | | - a = md5_hh(a, b, c, d, x[i + 5], 4, -378558) |
120 | | - d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463) |
121 | | - c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562) |
122 | | - b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556) |
123 | | - a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060) |
124 | | - d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353) |
125 | | - c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632) |
126 | | - b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640) |
127 | | - a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174) |
128 | | - d = md5_hh(d, a, b, c, x[i], 11, -358537222) |
129 | | - c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979) |
130 | | - b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189) |
131 | | - a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487) |
132 | | - d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835) |
133 | | - c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520) |
134 | | - b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651) |
| 119 | + a = md5hh(a, b, c, d, x[i + 5], 4, -378558) |
| 120 | + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463) |
| 121 | + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562) |
| 122 | + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556) |
| 123 | + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060) |
| 124 | + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353) |
| 125 | + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632) |
| 126 | + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640) |
| 127 | + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174) |
| 128 | + d = md5hh(d, a, b, c, x[i], 11, -358537222) |
| 129 | + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979) |
| 130 | + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189) |
| 131 | + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487) |
| 132 | + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835) |
| 133 | + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520) |
| 134 | + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651) |
135 | 135 |
|
136 | | - a = md5_ii(a, b, c, d, x[i], 6, -198630844) |
137 | | - d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415) |
138 | | - c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905) |
139 | | - b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055) |
140 | | - a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571) |
141 | | - d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606) |
142 | | - c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523) |
143 | | - b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799) |
144 | | - a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359) |
145 | | - d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744) |
146 | | - c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380) |
147 | | - b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649) |
148 | | - a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070) |
149 | | - d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379) |
150 | | - c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259) |
151 | | - b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551) |
| 136 | + a = md5ii(a, b, c, d, x[i], 6, -198630844) |
| 137 | + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415) |
| 138 | + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905) |
| 139 | + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055) |
| 140 | + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571) |
| 141 | + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606) |
| 142 | + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523) |
| 143 | + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799) |
| 144 | + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359) |
| 145 | + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744) |
| 146 | + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380) |
| 147 | + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649) |
| 148 | + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070) |
| 149 | + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379) |
| 150 | + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259) |
| 151 | + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551) |
152 | 152 |
|
153 | | - a = safe_add(a, olda) |
154 | | - b = safe_add(b, oldb) |
155 | | - c = safe_add(c, oldc) |
156 | | - d = safe_add(d, oldd) |
| 153 | + a = safeAdd(a, olda) |
| 154 | + b = safeAdd(b, oldb) |
| 155 | + c = safeAdd(c, oldc) |
| 156 | + d = safeAdd(d, oldd) |
157 | 157 | } |
158 | 158 | return [a, b, c, d] |
159 | 159 | } |
|
192 | 192 | /* |
193 | 193 | * Calculate the MD5 of a raw string |
194 | 194 | */ |
195 | | - function rstr_md5 (s) { |
196 | | - return binl2rstr(binl_md5(rstr2binl(s), s.length * 8)) |
| 195 | + function rstrMD5 (s) { |
| 196 | + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)) |
197 | 197 | } |
198 | 198 |
|
199 | 199 | /* |
200 | 200 | * Calculate the HMAC-MD5, of a key and some data (raw strings) |
201 | 201 | */ |
202 | | - function rstr_hmac_md5 (key, data) { |
| 202 | + function rstrHMACMD5 (key, data) { |
203 | 203 | var i |
204 | 204 | var bkey = rstr2binl(key) |
205 | 205 | var ipad = [] |
206 | 206 | var opad = [] |
207 | 207 | var hash |
208 | 208 | ipad[15] = opad[15] = undefined |
209 | 209 | if (bkey.length > 16) { |
210 | | - bkey = binl_md5(bkey, key.length * 8) |
| 210 | + bkey = binlMD5(bkey, key.length * 8) |
211 | 211 | } |
212 | 212 | for (i = 0; i < 16; i += 1) { |
213 | 213 | ipad[i] = bkey[i] ^ 0x36363636 |
214 | 214 | opad[i] = bkey[i] ^ 0x5C5C5C5C |
215 | 215 | } |
216 | | - hash = binl_md5(ipad.concat(rstr2binl(data)), 512 + data.length * 8) |
217 | | - return binl2rstr(binl_md5(opad.concat(hash), 512 + 128)) |
| 216 | + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8) |
| 217 | + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)) |
218 | 218 | } |
219 | 219 |
|
220 | 220 | /* |
221 | 221 | * Convert a raw string to a hex string |
222 | 222 | */ |
223 | 223 | function rstr2hex (input) { |
224 | | - var hex_tab = '0123456789abcdef' |
| 224 | + var hexTab = '0123456789abcdef' |
225 | 225 | var output = '' |
226 | 226 | var x |
227 | 227 | var i |
228 | 228 | for (i = 0; i < input.length; i += 1) { |
229 | 229 | x = input.charCodeAt(i) |
230 | | - output += hex_tab.charAt((x >>> 4) & 0x0F) + |
231 | | - hex_tab.charAt(x & 0x0F) |
| 230 | + output += hexTab.charAt((x >>> 4) & 0x0F) + |
| 231 | + hexTab.charAt(x & 0x0F) |
232 | 232 | } |
233 | 233 | return output |
234 | 234 | } |
235 | 235 |
|
236 | 236 | /* |
237 | 237 | * Encode a string as utf-8 |
238 | 238 | */ |
239 | | - function str2rstr_utf8 (input) { |
| 239 | + function str2rstrUTF8 (input) { |
240 | 240 | return unescape(encodeURIComponent(input)) |
241 | 241 | } |
242 | 242 |
|
243 | 243 | /* |
244 | 244 | * Take string arguments and return either raw or hex encoded strings |
245 | 245 | */ |
246 | | - function raw_md5 (s) { |
247 | | - return rstr_md5(str2rstr_utf8(s)) |
| 246 | + function rawMD5 (s) { |
| 247 | + return rstrMD5(str2rstrUTF8(s)) |
248 | 248 | } |
249 | | - function hex_md5 (s) { |
250 | | - return rstr2hex(raw_md5(s)) |
| 249 | + function hexMD5 (s) { |
| 250 | + return rstr2hex(rawMD5(s)) |
251 | 251 | } |
252 | | - function raw_hmac_md5 (k, d) { |
253 | | - return rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d)) |
| 252 | + function rawHMACMD5 (k, d) { |
| 253 | + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)) |
254 | 254 | } |
255 | | - function hex_hmac_md5 (k, d) { |
256 | | - return rstr2hex(raw_hmac_md5(k, d)) |
| 255 | + function hexHMACMD5 (k, d) { |
| 256 | + return rstr2hex(rawHMACMD5(k, d)) |
257 | 257 | } |
258 | 258 |
|
259 | 259 | function md5 (string, key, raw) { |
260 | 260 | if (!key) { |
261 | 261 | if (!raw) { |
262 | | - return hex_md5(string) |
| 262 | + return hexMD5(string) |
263 | 263 | } |
264 | | - return raw_md5(string) |
| 264 | + return rawMD5(string) |
265 | 265 | } |
266 | 266 | if (!raw) { |
267 | | - return hex_hmac_md5(key, string) |
| 267 | + return hexHMACMD5(key, string) |
268 | 268 | } |
269 | | - return raw_hmac_md5(key, string) |
| 269 | + return rawHMACMD5(key, string) |
270 | 270 | } |
271 | 271 |
|
272 | 272 | if (typeof define === 'function' && define.amd) { |
|
0 commit comments