1
+
2
+ /*
3
+ 唯品会登陆的加密过程 其中密码加密了 属于MD5加密
4
+ */
5
+
6
+
7
+ function safe_add ( x , y ) {
8
+ var lsw = ( x & 65535 ) + ( y & 65535 ) ,
9
+ msw = ( x >> 16 ) + ( y >> 16 ) + ( lsw >> 16 ) ;
10
+ return msw << 16 | lsw & 65535
11
+ }
12
+
13
+ function bit_rol ( num , cnt ) {
14
+ return num << cnt | num >>> 32 - cnt
15
+ }
16
+
17
+ function md5_cmn ( q , a , b , x , s , t ) {
18
+ return safe_add ( bit_rol ( safe_add ( safe_add ( a , q ) , safe_add ( x , t ) ) , s ) , b )
19
+ }
20
+
21
+ function md5_ff ( a , b , c , d , x , s , t ) {
22
+ return md5_cmn ( b & c | ~ b & d , a , b , x , s , t )
23
+ }
24
+
25
+ function md5_gg ( a , b , c , d , x , s , t ) {
26
+ return md5_cmn ( b & d | c & ~ d , a , b , x , s , t )
27
+ }
28
+
29
+ function md5_hh ( a , b , c , d , x , s , t ) {
30
+ return md5_cmn ( b ^ c ^ d , a , b , x , s , t )
31
+ }
32
+
33
+ function md5_ii ( a , b , c , d , x , s , t ) {
34
+ return md5_cmn ( c ^ ( b | ~ d ) , a , b , x , s , t )
35
+ }
36
+
37
+ function binl_md5 ( x , len ) {
38
+ x [ len >> 5 ] |= 128 << len % 32 ;
39
+ x [ ( len + 64 >>> 9 << 4 ) + 14 ] = len ;
40
+ var i , olda , oldb , oldc , oldd , a = 1732584193 ,
41
+ b = - 271733879 ,
42
+ c = - 1732584194 ,
43
+ d = 271733878 ;
44
+ for ( i = 0 ; i < x . length ; i += 16 ) {
45
+ olda = a ;
46
+ oldb = b ;
47
+ oldc = c ;
48
+ oldd = d ;
49
+ a = md5_ff ( a , b , c , d , x [ i ] , 7 , - 680876936 ) ;
50
+ d = md5_ff ( d , a , b , c , x [ i + 1 ] , 12 , - 389564586 ) ;
51
+ c = md5_ff ( c , d , a , b , x [ i + 2 ] , 17 , 606105819 ) ;
52
+ b = md5_ff ( b , c , d , a , x [ i + 3 ] , 22 , - 1044525330 ) ;
53
+ a = md5_ff ( a , b , c , d , x [ i + 4 ] , 7 , - 176418897 ) ;
54
+ d = md5_ff ( d , a , b , c , x [ i + 5 ] , 12 , 1200080426 ) ;
55
+ c = md5_ff ( c , d , a , b , x [ i + 6 ] , 17 , - 1473231341 ) ;
56
+ b = md5_ff ( b , c , d , a , x [ i + 7 ] , 22 , - 45705983 ) ;
57
+ a = md5_ff ( a , b , c , d , x [ i + 8 ] , 7 , 1770035416 ) ;
58
+ d = md5_ff ( d , a , b , c , x [ i + 9 ] , 12 , - 1958414417 ) ;
59
+ c = md5_ff ( c , d , a , b , x [ i + 10 ] , 17 , - 42063 ) ;
60
+ b = md5_ff ( b , c , d , a , x [ i + 11 ] , 22 , - 1990404162 ) ;
61
+ a = md5_ff ( a , b , c , d , x [ i + 12 ] , 7 , 1804603682 ) ;
62
+ d = md5_ff ( d , a , b , c , x [ i + 13 ] , 12 , - 40341101 ) ;
63
+ c = md5_ff ( c , d , a , b , x [ i + 14 ] , 17 , - 1502002290 ) ;
64
+ b = md5_ff ( b , c , d , a , x [ i + 15 ] , 22 , 1236535329 ) ;
65
+ a = md5_gg ( a , b , c , d , x [ i + 1 ] , 5 , - 165796510 ) ;
66
+ d = md5_gg ( d , a , b , c , x [ i + 6 ] , 9 , - 1069501632 ) ;
67
+ c = md5_gg ( c , d , a , b , x [ i + 11 ] , 14 , 643717713 ) ;
68
+ b = md5_gg ( b , c , d , a , x [ i ] , 20 , - 373897302 ) ;
69
+ a = md5_gg ( a , b , c , d , x [ i + 5 ] , 5 , - 701558691 ) ;
70
+ d = md5_gg ( d , a , b , c , x [ i + 10 ] , 9 , 38016083 ) ;
71
+ c = md5_gg ( c , d , a , b , x [ i + 15 ] , 14 , - 660478335 ) ;
72
+ b = md5_gg ( b , c , d , a , x [ i + 4 ] , 20 , - 405537848 ) ;
73
+ a = md5_gg ( a , b , c , d , x [ i + 9 ] , 5 , 568446438 ) ;
74
+ d = md5_gg ( d , a , b , c , x [ i + 14 ] , 9 , - 1019803690 ) ;
75
+ c = md5_gg ( c , d , a , b , x [ i + 3 ] , 14 , - 187363961 ) ;
76
+ b = md5_gg ( b , c , d , a , x [ i + 8 ] , 20 , 1163531501 ) ;
77
+ a = md5_gg ( a , b , c , d , x [ i + 13 ] , 5 , - 1444681467 ) ;
78
+ d = md5_gg ( d , a , b , c , x [ i + 2 ] , 9 , - 51403784 ) ;
79
+ c = md5_gg ( c , d , a , b , x [ i + 7 ] , 14 , 1735328473 ) ;
80
+ b = md5_gg ( b , c , d , a , x [ i + 12 ] , 20 , - 1926607734 ) ;
81
+ a = md5_hh ( a , b , c , d , x [ i + 5 ] , 4 , - 378558 ) ;
82
+ d = md5_hh ( d , a , b , c , x [ i + 8 ] , 11 , - 2022574463 ) ;
83
+ c = md5_hh ( c , d , a , b , x [ i + 11 ] , 16 , 1839030562 ) ;
84
+ b = md5_hh ( b , c , d , a , x [ i + 14 ] , 23 , - 35309556 ) ;
85
+ a = md5_hh ( a , b , c , d , x [ i + 1 ] , 4 , - 1530992060 ) ;
86
+ d = md5_hh ( d , a , b , c , x [ i + 4 ] , 11 , 1272893353 ) ;
87
+ c = md5_hh ( c , d , a , b , x [ i + 7 ] , 16 , - 155497632 ) ;
88
+ b = md5_hh ( b , c , d , a , x [ i + 10 ] , 23 , - 1094730640 ) ;
89
+ a = md5_hh ( a , b , c , d , x [ i + 13 ] , 4 , 681279174 ) ;
90
+ d = md5_hh ( d , a , b , c , x [ i ] , 11 , - 358537222 ) ;
91
+ c = md5_hh ( c , d , a , b , x [ i + 3 ] , 16 , - 722521979 ) ;
92
+ b = md5_hh ( b , c , d , a , x [ i + 6 ] , 23 , 76029189 ) ;
93
+ a = md5_hh ( a , b , c , d , x [ i + 9 ] , 4 , - 640364487 ) ;
94
+ d = md5_hh ( d , a , b , c , x [ i + 12 ] , 11 , - 421815835 ) ;
95
+ c = md5_hh ( c , d , a , b , x [ i + 15 ] , 16 , 530742520 ) ;
96
+ b = md5_hh ( b , c , d , a , x [ i + 2 ] , 23 , - 995338651 ) ;
97
+ a = md5_ii ( a , b , c , d , x [ i ] , 6 , - 198630844 ) ;
98
+ d = md5_ii ( d , a , b , c , x [ i + 7 ] , 10 , 1126891415 ) ;
99
+ c = md5_ii ( c , d , a , b , x [ i + 14 ] , 15 , - 1416354905 ) ;
100
+ b = md5_ii ( b , c , d , a , x [ i + 5 ] , 21 , - 57434055 ) ;
101
+ a = md5_ii ( a , b , c , d , x [ i + 12 ] , 6 , 1700485571 ) ;
102
+ d = md5_ii ( d , a , b , c , x [ i + 3 ] , 10 , - 1894986606 ) ;
103
+ c = md5_ii ( c , d , a , b , x [ i + 10 ] , 15 , - 1051523 ) ;
104
+ b = md5_ii ( b , c , d , a , x [ i + 1 ] , 21 , - 2054922799 ) ;
105
+ a = md5_ii ( a , b , c , d , x [ i + 8 ] , 6 , 1873313359 ) ;
106
+ d = md5_ii ( d , a , b , c , x [ i + 15 ] , 10 , - 30611744 ) ;
107
+ c = md5_ii ( c , d , a , b , x [ i + 6 ] , 15 , - 1560198380 ) ;
108
+ b = md5_ii ( b , c , d , a , x [ i + 13 ] , 21 , 1309151649 ) ;
109
+ a = md5_ii ( a , b , c , d , x [ i + 4 ] , 6 , - 145523070 ) ;
110
+ d = md5_ii ( d , a , b , c , x [ i + 11 ] , 10 , - 1120210379 ) ;
111
+ c = md5_ii ( c , d , a , b , x [ i + 2 ] , 15 , 718787259 ) ;
112
+ b = md5_ii ( b , c , d , a , x [ i + 9 ] , 21 , - 343485551 ) ;
113
+ a = safe_add ( a , olda ) ;
114
+ b = safe_add ( b , oldb ) ;
115
+ c = safe_add ( c , oldc ) ;
116
+ d = safe_add ( d , oldd )
117
+ }
118
+ return [ a , b , c , d ]
119
+ }
120
+
121
+ function binl2rstr ( input ) {
122
+ var i , output = "" ;
123
+ for ( i = 0 ; i < input . length * 32 ; i += 8 )
124
+ output += String . fromCharCode ( input [ i >> 5 ] >>> i % 32 & 255 ) ;
125
+ return output
126
+ }
127
+
128
+ function rstr2binl ( input ) {
129
+ var i , output = [ ] ;
130
+ output [ ( input . length >> 2 ) - 1 ] = undefined ;
131
+ for ( i = 0 ; i < output . length ; i += 1 )
132
+ output [ i ] = 0 ;
133
+ for ( i = 0 ; i < input . length * 8 ; i += 8 )
134
+ output [ i >> 5 ] |= ( input . charCodeAt ( i / 8 ) & 255 ) << i % 32 ;
135
+ return output
136
+ }
137
+
138
+ function rstr_md5 ( s ) {
139
+ return binl2rstr ( binl_md5 ( rstr2binl ( s ) , s . length * 8 ) )
140
+ }
141
+
142
+ function rstr_hmac_md5 ( key , data ) {
143
+ var i , bkey = rstr2binl ( key ) ,
144
+ ipad = [ ] ,
145
+ opad = [ ] ,
146
+ hash ;
147
+ ipad [ 15 ] = opad [ 15 ] = undefined ;
148
+ if ( bkey . length > 16 )
149
+ bkey = binl_md5 ( bkey , key . length * 8 ) ;
150
+ for ( i = 0 ; i < 16 ; i += 1 ) {
151
+ ipad [ i ] = bkey [ i ] ^ 909522486 ;
152
+ opad [ i ] = bkey [ i ] ^ 1549556828
153
+ }
154
+ hash = binl_md5 ( ipad . concat ( rstr2binl ( data ) ) , 512 + data . length * 8 ) ;
155
+ return binl2rstr ( binl_md5 ( opad . concat ( hash ) , 512 + 128 ) )
156
+ }
157
+
158
+ function rstr2hex ( input ) {
159
+ var hex_tab = "0123456789abcdef" ,
160
+ output = "" ,
161
+ x , i ;
162
+ for ( i = 0 ; i < input . length ; i += 1 ) {
163
+ x = input . charCodeAt ( i ) ;
164
+ output += hex_tab . charAt ( x >>> 4 & 15 ) + hex_tab . charAt ( x & 15 )
165
+ }
166
+ return output
167
+ }
168
+
169
+ function str2rstr_utf8 ( input ) {
170
+ return unescape ( encodeURIComponent ( input ) )
171
+ }
172
+
173
+ function raw_md5 ( s ) {
174
+ return rstr_md5 ( str2rstr_utf8 ( s ) )
175
+ }
176
+
177
+ function hex_md5 ( s ) {
178
+ return rstr2hex ( raw_md5 ( s ) )
179
+ }
180
+
181
+ function raw_hmac_md5 ( k , d ) {
182
+ return rstr_hmac_md5 ( str2rstr_utf8 ( k ) , str2rstr_utf8 ( d ) )
183
+ }
184
+
185
+ function hex_hmac_md5 ( k , d ) {
186
+ return rstr2hex ( raw_hmac_md5 ( k , d ) )
187
+ }
188
+
189
+ function md5 ( string , key , raw ) {
190
+ if ( ! key ) {
191
+ if ( ! raw )
192
+ return hex_md5 ( string ) ;
193
+ return raw_md5 ( string )
194
+ }
195
+ if ( ! raw )
196
+ return hex_hmac_md5 ( key , string ) ;
197
+ return raw_hmac_md5 ( key , string )
198
+ }
199
+
200
+
201
+ /////////////////////////////////
202
+ function password ( pwd ) {
203
+ return md5 ( pwd )
204
+ }
0 commit comments