001.
Function
MD5(sMessage)
002.
Dim
x
003.
Dim
k
004.
Dim
AA
005.
Dim
BB
006.
Dim
CC
007.
Dim
DD
008.
Dim
a
009.
Dim
b
010.
Dim
c
011.
Dim
d
012.
013.
Const
S11 = 7
014.
Const
S12 = 12
015.
Const
S13 = 17
016.
Const
S14 = 22
017.
Const
S21 = 5
018.
Const
S22 = 9
019.
Const
S23 = 14
020.
Const
S24 = 20
021.
Const
S31 = 4
022.
Const
S32 = 11
023.
Const
S33 = 16
024.
Const
S34 = 23
025.
Const
S41 = 6
026.
Const
S42 = 10
027.
Const
S43 = 15
028.
Const
S44 = 21
029.
030.
x = ConvertToWordArray(sMessage)
031.
032.
a = &H67452301
033.
b = &HEFCDAB89
034.
c = &H98BADCFE
035.
d = &H10325476
036.
037.
For
k = 0
To
UBound(x)
Step
16
038.
AA = a
039.
BB = b
040.
CC = c
041.
DD = d
042.
043.
FF a, b, c, d, x(k + 0), S11, &HD76AA478
044.
FF d, a, b, c, x(k + 1), S12, &HE8C7B756
045.
FF c, d, a, b, x(k + 2), S13, &H242070DB
046.
FF b, c, d, a, x(k + 3), S14, &HC1BDCEEE
047.
FF a, b, c, d, x(k + 4), S11, &HF57C0FAF
048.
FF d, a, b, c, x(k + 5), S12, &H4787C62A
049.
FF c, d, a, b, x(k + 6), S13, &HA8304613
050.
FF b, c, d, a, x(k + 7), S14, &HFD469501
051.
FF a, b, c, d, x(k + 8), S11, &H698098D8
052.
FF d, a, b, c, x(k + 9), S12, &H8B44F7AF
053.
FF c, d, a, b, x(k + 10), S13, &HFFFF5BB1
054.
FF b, c, d, a, x(k + 11), S14, &H895CD7BE
055.
FF a, b, c, d, x(k + 12), S11, &H6B901122
056.
FF d, a, b, c, x(k + 13), S12, &HFD987193
057.
FF c, d, a, b, x(k + 14), S13, &HA679438E
058.
FF b, c, d, a, x(k + 15), S14, &H49B40821
059.
060.
GG a, b, c, d, x(k + 1), S21, &HF61E2562
061.
GG d, a, b, c, x(k + 6), S22, &HC040B340
062.
GG c, d, a, b, x(k + 11), S23, &H265E5A51
063.
GG b, c, d, a, x(k + 0), S24, &HE9B6C7AA
064.
GG a, b, c, d, x(k + 5), S21, &HD62F105D
065.
GG d, a, b, c, x(k + 10), S22, &H2441453
066.
GG c, d, a, b, x(k + 15), S23, &HD8A1E681
067.
GG b, c, d, a, x(k + 4), S24, &HE7D3FBC8
068.
GG a, b, c, d, x(k + 9), S21, &H21E1CDE6
069.
GG d, a, b, c, x(k + 14), S22, &HC33707D6
070.
GG c, d, a, b, x(k + 3), S23, &HF4D50D87
071.
GG b, c, d, a, x(k + 8), S24, &H455A14ED
072.
GG a, b, c, d, x(k + 13), S21, &HA9E3E905
073.
GG d, a, b, c, x(k + 2), S22, &HFCEFA3F8
074.
GG c, d, a, b, x(k + 7), S23, &H676F02D9
075.
GG b, c, d, a, x(k + 12), S24, &H8D2A4C8A
076.
077.
HH a, b, c, d, x(k + 5), S31, &HFFFA3942
078.
HH d, a, b, c, x(k + 8), S32, &H8771F681
079.
HH c, d, a, b, x(k + 11), S33, &H6D9D6122
080.
HH b, c, d, a, x(k + 14), S34, &HFDE5380C
081.
HH a, b, c, d, x(k + 1), S31, &HA4BEEA44
082.
HH d, a, b, c, x(k + 4), S32, &H4BDECFA9
083.
HH c, d, a, b, x(k + 7), S33, &HF6BB4B60
084.
HH b, c, d, a, x(k + 10), S34, &HBEBFBC70
085.
HH a, b, c, d, x(k + 13), S31, &H289B7EC6
086.
HH d, a, b, c, x(k + 0), S32, &HEAA127FA
087.
HH c, d, a, b, x(k + 3), S33, &HD4EF3085
088.
HH b, c, d, a, x(k + 6), S34, &H4881D05
089.
HH a, b, c, d, x(k + 9), S31, &HD9D4D039
090.
HH d, a, b, c, x(k + 12), S32, &HE6DB99E5
091.
HH c, d, a, b, x(k + 15), S33, &H1FA27CF8
092.
HH b, c, d, a, x(k + 2), S34, &HC4AC5665
093.
094.
II a, b, c, d, x(k + 0), S41, &HF4292244
095.
II d, a, b, c, x(k + 7), S42, &H432AFF97
096.
II c, d, a, b, x(k + 14), S43, &HAB9423A7
097.
II b, c, d, a, x(k + 5), S44, &HFC93A039
098.
II a, b, c, d, x(k + 12), S41, &H655B59C3
099.
II d, a, b, c, x(k + 3), S42, &H8F0CCC92
100.
II c, d, a, b, x(k + 10), S43, &HFFEFF47D
101.
II b, c, d, a, x(k + 1), S44, &H85845DD1
102.
II a, b, c, d, x(k + 8), S41, &H6FA87E4F
103.
II d, a, b, c, x(k + 15), S42, &HFE2CE6E0
104.
II c, d, a, b, x(k + 6), S43, &HA3014314
105.
II b, c, d, a, x(k + 13), S44, &H4E0811A1
106.
II a, b, c, d, x(k + 4), S41, &HF7537E82
107.
II d, a, b, c, x(k + 11), S42, &HBD3AF235
108.
II c, d, a, b, x(k + 2), S43, &H2AD7D2BB
109.
II b, c, d, a, x(k + 9), S44, &HEB86D391
110.
111.
a = AddUnsigned(a, AA)
112.
b = AddUnsigned(b, BB)
113.
c = AddUnsigned(c, CC)
114.
d = AddUnsigned(d, DD)
115.
Next
116.
117.
MD5 = LCase(WordToHex(a) & WordToHex(b) & WordToHex(c) & WordToHex(d))
118.
End
Function