corrade-nucleus-nucleons – Blame information for rev 20
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
20 | office | 1 | (function(){ |
2 | |||
3 | var C = (typeof window === 'undefined') ? require('./Crypto').Crypto : window.Crypto; |
||
4 | |||
5 | // Shortcuts
|
||
6 | var util = C.util, |
||
7 | charenc = C.charenc, |
||
8 | UTF8 = charenc.UTF8, |
||
9 | Binary = charenc.Binary; |
||
10 | |||
11 | // Public API
|
||
12 | var MD5 = C.MD5 = function (message, options) { |
||
13 | var digestbytes = util.wordsToBytes(MD5._md5(message)); |
||
14 | return options && options.asBytes ? digestbytes : |
||
15 | options && options.asString ? Binary.bytesToString(digestbytes) : |
||
16 | util.bytesToHex(digestbytes); |
||
17 | }; |
||
18 | |||
19 | // The core
|
||
20 | MD5._md5 = function (message) { |
||
21 | |||
22 | // Convert to byte array
|
||
23 | if (message.constructor == String) message = UTF8.stringToBytes(message); |
||
24 | /* else, assume byte array already */ |
||
25 | |||
26 | var m = util.bytesToWords(message), |
||
27 | l = message.length * 8, |
||
28 | a = 1732584193, |
||
29 | b = -271733879, |
||
30 | c = -1732584194, |
||
31 | d = 271733878; |
||
32 | |||
33 | // Swap endian
|
||
34 | for (var i = 0; i < m.length; i++) { |
||
35 | m[i] = ((m[i] << 8) | (m[i] >>> 24)) & 0x00FF00FF | |
||
36 | ((m[i] << 24) | (m[i] >>> 8)) & 0xFF00FF00; |
||
37 | } |
||
38 | |||
39 | // Padding
|
||
40 | m[l >>> 5] |= 0x80 << (l % 32); |
||
41 | m[(((l + 64) >>> 9) << 4) + 14] = l; |
||
42 | |||
43 | // Method shortcuts
|
||
44 | var FF = MD5._ff, |
||
45 | GG = MD5._gg, |
||
46 | HH = MD5._hh, |
||
47 | II = MD5._ii; |
||
48 | |||
49 | for (var i = 0; i < m.length; i += 16) { |
||
50 | |||
51 | var aa = a, |
||
52 | bb = b, |
||
53 | cc = c, |
||
54 | dd = d; |
||
55 | |||
56 | a = FF(a, b, c, d, m[i+ 0], 7, -680876936); |
||
57 | d = FF(d, a, b, c, m[i+ 1], 12, -389564586); |
||
58 | c = FF(c, d, a, b, m[i+ 2], 17, 606105819); |
||
59 | b = FF(b, c, d, a, m[i+ 3], 22, -1044525330); |
||
60 | a = FF(a, b, c, d, m[i+ 4], 7, -176418897); |
||
61 | d = FF(d, a, b, c, m[i+ 5], 12, 1200080426); |
||
62 | c = FF(c, d, a, b, m[i+ 6], 17, -1473231341); |
||
63 | b = FF(b, c, d, a, m[i+ 7], 22, -45705983); |
||
64 | a = FF(a, b, c, d, m[i+ 8], 7, 1770035416); |
||
65 | d = FF(d, a, b, c, m[i+ 9], 12, -1958414417); |
||
66 | c = FF(c, d, a, b, m[i+10], 17, -42063); |
||
67 | b = FF(b, c, d, a, m[i+11], 22, -1990404162); |
||
68 | a = FF(a, b, c, d, m[i+12], 7, 1804603682); |
||
69 | d = FF(d, a, b, c, m[i+13], 12, -40341101); |
||
70 | c = FF(c, d, a, b, m[i+14], 17, -1502002290); |
||
71 | b = FF(b, c, d, a, m[i+15], 22, 1236535329); |
||
72 | |||
73 | a = GG(a, b, c, d, m[i+ 1], 5, -165796510); |
||
74 | d = GG(d, a, b, c, m[i+ 6], 9, -1069501632); |
||
75 | c = GG(c, d, a, b, m[i+11], 14, 643717713); |
||
76 | b = GG(b, c, d, a, m[i+ 0], 20, -373897302); |
||
77 | a = GG(a, b, c, d, m[i+ 5], 5, -701558691); |
||
78 | d = GG(d, a, b, c, m[i+10], 9, 38016083); |
||
79 | c = GG(c, d, a, b, m[i+15], 14, -660478335); |
||
80 | b = GG(b, c, d, a, m[i+ 4], 20, -405537848); |
||
81 | a = GG(a, b, c, d, m[i+ 9], 5, 568446438); |
||
82 | d = GG(d, a, b, c, m[i+14], 9, -1019803690); |
||
83 | c = GG(c, d, a, b, m[i+ 3], 14, -187363961); |
||
84 | b = GG(b, c, d, a, m[i+ 8], 20, 1163531501); |
||
85 | a = GG(a, b, c, d, m[i+13], 5, -1444681467); |
||
86 | d = GG(d, a, b, c, m[i+ 2], 9, -51403784); |
||
87 | c = GG(c, d, a, b, m[i+ 7], 14, 1735328473); |
||
88 | b = GG(b, c, d, a, m[i+12], 20, -1926607734); |
||
89 | |||
90 | a = HH(a, b, c, d, m[i+ 5], 4, -378558); |
||
91 | d = HH(d, a, b, c, m[i+ 8], 11, -2022574463); |
||
92 | c = HH(c, d, a, b, m[i+11], 16, 1839030562); |
||
93 | b = HH(b, c, d, a, m[i+14], 23, -35309556); |
||
94 | a = HH(a, b, c, d, m[i+ 1], 4, -1530992060); |
||
95 | d = HH(d, a, b, c, m[i+ 4], 11, 1272893353); |
||
96 | c = HH(c, d, a, b, m[i+ 7], 16, -155497632); |
||
97 | b = HH(b, c, d, a, m[i+10], 23, -1094730640); |
||
98 | a = HH(a, b, c, d, m[i+13], 4, 681279174); |
||
99 | d = HH(d, a, b, c, m[i+ 0], 11, -358537222); |
||
100 | c = HH(c, d, a, b, m[i+ 3], 16, -722521979); |
||
101 | b = HH(b, c, d, a, m[i+ 6], 23, 76029189); |
||
102 | a = HH(a, b, c, d, m[i+ 9], 4, -640364487); |
||
103 | d = HH(d, a, b, c, m[i+12], 11, -421815835); |
||
104 | c = HH(c, d, a, b, m[i+15], 16, 530742520); |
||
105 | b = HH(b, c, d, a, m[i+ 2], 23, -995338651); |
||
106 | |||
107 | a = II(a, b, c, d, m[i+ 0], 6, -198630844); |
||
108 | d = II(d, a, b, c, m[i+ 7], 10, 1126891415); |
||
109 | c = II(c, d, a, b, m[i+14], 15, -1416354905); |
||
110 | b = II(b, c, d, a, m[i+ 5], 21, -57434055); |
||
111 | a = II(a, b, c, d, m[i+12], 6, 1700485571); |
||
112 | d = II(d, a, b, c, m[i+ 3], 10, -1894986606); |
||
113 | c = II(c, d, a, b, m[i+10], 15, -1051523); |
||
114 | b = II(b, c, d, a, m[i+ 1], 21, -2054922799); |
||
115 | a = II(a, b, c, d, m[i+ 8], 6, 1873313359); |
||
116 | d = II(d, a, b, c, m[i+15], 10, -30611744); |
||
117 | c = II(c, d, a, b, m[i+ 6], 15, -1560198380); |
||
118 | b = II(b, c, d, a, m[i+13], 21, 1309151649); |
||
119 | a = II(a, b, c, d, m[i+ 4], 6, -145523070); |
||
120 | d = II(d, a, b, c, m[i+11], 10, -1120210379); |
||
121 | c = II(c, d, a, b, m[i+ 2], 15, 718787259); |
||
122 | b = II(b, c, d, a, m[i+ 9], 21, -343485551); |
||
123 | |||
124 | a = (a + aa) >>> 0; |
||
125 | b = (b + bb) >>> 0; |
||
126 | c = (c + cc) >>> 0; |
||
127 | d = (d + dd) >>> 0; |
||
128 | |||
129 | } |
||
130 | |||
131 | return util.endian([a, b, c, d]); |
||
132 | |||
133 | }; |
||
134 | |||
135 | // Auxiliary functions
|
||
136 | MD5._ff = function (a, b, c, d, x, s, t) { |
||
137 | var n = a + (b & c | ~b & d) + (x >>> 0) + t; |
||
138 | return ((n << s) | (n >>> (32 - s))) + b; |
||
139 | }; |
||
140 | MD5._gg = function (a, b, c, d, x, s, t) { |
||
141 | var n = a + (b & d | c & ~d) + (x >>> 0) + t; |
||
142 | return ((n << s) | (n >>> (32 - s))) + b; |
||
143 | }; |
||
144 | MD5._hh = function (a, b, c, d, x, s, t) { |
||
145 | var n = a + (b ^ c ^ d) + (x >>> 0) + t; |
||
146 | return ((n << s) | (n >>> (32 - s))) + b; |
||
147 | }; |
||
148 | MD5._ii = function (a, b, c, d, x, s, t) { |
||
149 | var n = a + (c ^ (b | ~d)) + (x >>> 0) + t; |
||
150 | return ((n << s) | (n >>> (32 - s))) + b; |
||
151 | }; |
||
152 | |||
153 | // Package private blocksize
|
||
154 | MD5._blocksize = 16; |
||
155 | |||
156 | MD5._digestsize = 16; |
||
157 | |||
158 | })(); |