📄 md5的介绍,算法和实现.htm
字号:
Xin(13), "a9e3e905", 5 <BR> MD5F2 d, a, b, c,
Xin(2), "fcefa3f8", 9 <BR> MD5F2 c, d, a, b,
Xin(7), "676f02d9", 14 <BR> MD5F2 b, c, d, a,
Xin(12), "8d2a4c8a", 20 <BR><BR> ' 第三轮循环 <BR>
MD5F3 a, b, c, d, Xin(5), "fffa3942", 4 <BR>
MD5F3 d, a, b, c, Xin(8), "8771f681", 11 <BR>
MD5F3 c, d, a, b, Xin(11), "6d9d6122", 16 <BR>
MD5F3 b, c, d, a, Xin(14), "fde5380c", 23 <BR>
MD5F3 a, b, c, d, Xin(1), "a4beea44", 4 <BR>
MD5F3 d, a, b, c, Xin(4), "4bdecfa9", 11 <BR>
MD5F3 c, d, a, b, Xin(7), "f6bb4b60", 16 <BR>
MD5F3 b, c, d, a, Xin(10), "bebfbc70", 23 <BR>
MD5F3 a, b, c, d, Xin(13), "289b7ec6", 4 <BR>
MD5F3 d, a, b, c, Xin(0), "e27fa", 11 <BR>
MD5F3 c, d, a, b, Xin(3), "d4ef3085", 16 <BR> MD5F3
b, c, d, a, Xin(6), "04881d05", 23 <BR> MD5F3 a, b,
c, d, Xin(9), "d9d4d039", 4 <BR> MD5F3 d, a, b, c,
Xin(12), "e6db99e5", 11 <BR> MD5F3 c, d, a, b,
Xin(15), "1fa27cf8", 16 <BR> MD5F3 b, c, d, a,
Xin(2), "c4ac5665", 23 <BR><BR> ' 第四轮循环 <BR>
MD5F4 a, b, c, d, Xin(0), "f4292244", 6 <BR>
MD5F4 d, a, b, c, Xin(7), "432aff97", 10 <BR>
MD5F4 c, d, a, b, Xin(14), "ab9423a7", 15 <BR>
MD5F4 b, c, d, a, Xin(5), "fc93a039", 21 <BR>
MD5F4 a, b, c, d, Xin(12), "655b59c3", 6 <BR>
MD5F4 d, a, b, c, Xin(3), "8f0ccc92", 10 <BR>
MD5F4 c, d, a, b, Xin(10), "ffeff47d", 15 <BR>
MD5F4 b, c, d, a, Xin(1), "85845dd1", 21 <BR>
MD5F4 a, b, c, d, Xin(8), "6fa87e4f", 6 <BR>
MD5F4 d, a, b, c, Xin(15), "fe2ce6e0", 10 <BR>
MD5F4 c, d, a, b, Xin(6), "a3014314", 15 <BR>
MD5F4 b, c, d, a, Xin(13), "4e0811a1", 21 <BR>
MD5F4 a, b, c, d, Xin(4), "f7537e82", 6 <BR>
MD5F4 d, a, b, c, Xin(11), "bd3af235", 10 <BR>
MD5F4 c, d, a, b, Xin(2), "2ad7d2bb", 15 <BR> MD5F4
b, c, d, a, Xin(9), "eb86d391", 21 <BR><BR> buf(0)
= BigAdd(buf(0), a) <BR> buf(1) = BigAdd(buf(1), b)
<BR> buf(2) = BigAdd(buf(2), c) <BR>
buf(3) = BigAdd(buf(3), d) <BR> Next loopouter
<BR><BR> hashthis = "" <BR> For loopit = 0 To 3
<BR> For loopinner = 3 To 0 Step -1 <BR>
hashthis = hashthis + Chr(Val("&H" +
Mid$(buf(loopit), 1 + 2 * loopinner, 2))) <BR> Next
loopinner <BR> Next loopit <BR><BR>MD5_Calc = hashthis <BR>End
Function <BR><BR>Function BigMod32Add(ByVal value1 As String, ByVal value2 As
String) As String <BR> BigMod32Add = Right$(BigAdd(value1,
value2), 8) <BR>End Function <BR><BR>Public Function BigAdd(ByVal value1 As
String, ByVal value2 As String) As String <BR>Dim valueans As String <BR>Dim
loopit As Integer, tempnum As Integer <BR><BR> tempnum =
Len(value1) - Len(value2) <BR> If tempnum < 0 Then <BR>
value1 = Space$(Abs(tempnum)) + value1 <BR>
ElseIf tempnum > 0 Then <BR> value2 =
Space$(Abs(tempnum)) + value2 <BR> End If <BR><BR>
tempnum = 0 <BR> For loopit = Len(value1) To 1 Step -1 <BR>
tempnum = tempnum + Val("&H" + Mid$(value1, loopit,
1)) + Val("&H" + Mid$(value2, loopit, 1)) <BR>
valueans = Hex$(tempnum Mod 16) + valueans <BR>
tempnum = Int(tempnum / 16) <BR> Next loopit <BR><BR>
If tempnum <> 0 Then <BR> valueans =
Hex$(tempnum) + valueans <BR> End If <BR><BR> BigAdd
= Right(valueans, 8) <BR>End Function <BR><BR>Public Function RotLeft(ByVal
value1 As String, ByVal rots As Integer) As String <BR>Dim tempstr As String
<BR>Dim loopit As Integer, loopinner As Integer <BR>Dim tempnum As Integer
<BR><BR> rots = rots Mod 32 <BR> <BR>
If rots = 0 Then <BR> RotLeft = value1 <BR>
Exit Function <BR> End If <BR><BR>
value1 = Right$(value1, 8) <BR> tempstr = String$(8 -
Len(value1), "0") + value1 <BR> value1 = "" <BR><BR>
' 转换成二进制形式 <BR> For loopit = 1 To 8 <BR>
tempnum = Val("&H" + Mid$(tempstr, loopit, 1)) <BR>
For loopinner = 3 To 0 Step -1 <BR>
If tempnum And 2 ^ loopinner Then <BR>
value1 = value1 + "1" <BR>
Else <BR>
value1 = value1 + "0" <BR>
End If <BR> Next loopinner <BR>
Next loopit <BR> tempstr = Mid$(value1, rots + 1) + Left$(value1,
rots) <BR><BR> ' 转换为十六进制 <BR> value1 = "" <BR>
For loopit = 0 To 7 <BR> tempnum = 0
<BR> For loopinner = 0 To 3 <BR>
If Val(Mid$(tempstr, 4 * loopit + loopinner + 1,
1)) Then <BR><BR>
tempnum = tempnum + 2 ^ (3 - loopinner) <BR>
End If <BR> Next loopinner <BR>
value1 = value1 + Hex$(tempnum) <BR> Next loopit
<BR><BR> RotLeft = Right(value1, 8) <BR>End Function
<BR><BR>Function BigAND(ByVal value1 As String, ByVal value2 As String) As
String <BR>Dim valueans As String <BR>Dim loopit As Integer, tempnum As
Integer <BR><BR> tempnum = Len(value1) - Len(value2) <BR>
If tempnum < 0 Then <BR> value2 =
Mid$(value2, Abs(tempnum) + 1) <BR> ElseIf tempnum > 0 Then
<BR> value1 = Mid$(value1, tempnum + 1) <BR>
End If <BR><BR> For loopit = 1 To Len(value1) <BR>
valueans = valueans + Hex$(Val("&H" + Mid$(value1,
loopit, 1)) And Val("&H" + Mid$(value2, loopit, 1))) <BR>
Next loopit <BR><BR> BigAND = valueans <BR>End Function
<BR><BR>Function BigNOT(ByVal value1 As String) As String <BR>Dim valueans As
String <BR>Dim loopit As Integer <BR><BR> value1 = Right$(value1,
8) <BR> value1 = String$(8 - Len(value1), "0") + value1
<BR> For loopit = 1 To 8 <BR> valueans
= valueans + Hex$(15 Xor Val("&H" + Mid$(value1, loopit, 1))) <BR>
Next loopit <BR><BR> BigNOT = valueans <BR>End Function
<BR><BR>Function BigOR(ByVal value1 As String, ByVal value2 As String) As
String <BR>Dim valueans As String <BR>Dim loopit As Integer, tempnum As
Integer <BR><BR> tempnum = Len(value1) - Len(value2) <BR>
If tempnum < 0 Then <BR> valueans =
Left$(value2, Abs(tempnum)) <BR> value2 =
Mid$(value2, Abs(tempnum) + 1) <BR> ElseIf tempnum > 0 Then
<BR> valueans = Left$(value1, Abs(tempnum))
<BR> value1 = Mid$(value1, tempnum + 1) <BR>
End If <BR><BR> For loopit = 1 To Len(value1) <BR>
valueans = valueans + Hex$(Val("&H" + Mid$(value1,
loopit, 1)) Or Val("&H" + Mid$(value2, loopit, 1))) <BR> Next
loopit <BR><BR> BigOR = valueans <BR>End Function
<BR><BR>Function BigXOR(ByVal value1 As String, ByVal value2 As String) As
String <BR>Dim valueans As String <BR>Dim loopit As Integer, tempnum As
Integer <BR><BR> tempnum = Len(value1) - Len(value2) <BR>
If tempnum < 0 Then <BR> valueans =
Left$(value2, Abs(tempnum)) <BR> value2 =
Mid$(value2, Abs(tempnum) + 1) <BR> ElseIf tempnum > 0 Then
<BR> valueans = Left$(value1, Abs(tempnum))
<BR> value1 = Mid$(value1, tempnum + 1) <BR>
End If <BR><BR> For loopit = 1 To Len(value1) <BR>
valueans = valueans + Hex$(Val("&H" + Mid$(value1,
loopit, 1)) Xor Val("&H" + Mid$(value2, loopit, 1))) <BR>
Next loopit <BR><BR> BigXOR = Right(valueans, 8) <BR>End Function
<BR>———————————————————————————————————————————— <BR><BR>呵呵
洋洋洒洒的一大篇可是我查找了不少资料才写出来 ^_^ 大概可以当成我们学校的Assignment了 呵呵 感谢大家看完
最后给大家出到题吧 大家可以试试自己的运气啊 就是: <BR>51E5D4BD3323A02CCCDD0472AE2DC20B
这组数是我通过MD5算法加密一组字符串后产生的一组密码 大家猜猜我加密的字符串是什么 ^_^ 提示一下————加空格一共20位
^_^ <BR><BR>^_^ 88 <BR><BR><BR><BR><BR>仅以次文献给我们可爱的组织CCG 希望它能蒸蒸日上!
<BR><BR>娃娃(NYDoll) <BR>属于中国破解组织CHiNA CrACKiNG GrOUp </BLOCKQUOTE>
<HR>
<P> </P></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -