Skip to content

Commit 5923463

Browse files
committed
add BUGs in MD5
1 parent 4d7782d commit 5923463

15 files changed

+122
-1
lines changed

β€ŽSecurityLibrary/MD5/MD5.cs

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
ο»Ώusing System;
2+
using System.Collections;
23
using System.Collections.Generic;
34
using System.Linq;
45
using System.Text;
@@ -8,9 +9,54 @@ namespace SecurityLibrary.MD5
89
{
910
public class MD5
1011
{
12+
static string ToBinaryString(Encoding encoding, string text)
13+
{
14+
return string.Join("", encoding.GetBytes(text).Select(n => Convert.ToString(n, 2).PadLeft(8, '0')));
15+
}
1116
public string GetHash(string text)
1217
{
13-
throw new NotImplementedException();
18+
//step1
19+
text = "Hello World!";
20+
var textP = ToBinaryString(Encoding.UTF8, text);
21+
textP = textP.Length < 448 ? textP + '1' : textP;
22+
while (textP.Length <448)
23+
{
24+
textP += '0';
25+
}
26+
Console.WriteLine(textP);
27+
Console.WriteLine(textP.Length);
28+
29+
//step2
30+
var bitsAdded = Convert.ToString(text.Length*8, 2);
31+
Console.WriteLine(text.Length*8);
32+
Console.WriteLine(bitsAdded);
33+
textP += bitsAdded;
34+
while (textP.Length < 512)
35+
{
36+
textP += '0';
37+
}
38+
39+
/*
40+
int j = 0;
41+
for (int i = 0; i < 512; i+=8)
42+
{
43+
Console.Write("arr["+j.ToString()+"]: ");
44+
Console.Write(textP[i].ToString()+textP[i+1].ToString()+textP[i+2].ToString()+textP[i+3].ToString()+textP[i+4].ToString()+textP[i+5].ToString()+textP[i+6].ToString()+textP[i+7].ToString()+"\n");
45+
j++;
46+
}
47+
*/
48+
49+
//step3
50+
string A = "01234567";
51+
string B = "89ABCDEF";
52+
string C = "FEDCBA98";
53+
string D = "76543210";
54+
55+
56+
57+
58+
return "";
59+
1460
}
1561
}
1662
}
512 Bytes
Binary file not shown.
Binary file not shown.
512 Bytes
Binary file not shown.
Binary file not shown.

β€ŽSecurityPackage.v12.suo

2 KB
Binary file not shown.

β€ŽSecurityPackageTest/MD5Test.cs

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
ο»Ώusing System;
2+
using Microsoft.VisualStudio.TestTools.UnitTesting;
3+
using SecurityLibrary.MD5;
4+
5+
namespace SecurityPackageTest
6+
{
7+
[TestClass]
8+
public class MD5Test
9+
{
10+
[TestMethod]
11+
public void MD5Test1()
12+
{
13+
MD5 algorithm = new MD5();
14+
string hash = algorithm.GetHash("abcdefgh");
15+
Assert.IsTrue(hash.Equals("E8DC4081B13434B45189A720B77B6818", StringComparison.InvariantCultureIgnoreCase));
16+
}
17+
18+
[TestMethod]
19+
public void MD5Test2()
20+
{
21+
MD5 algorithm = new MD5();
22+
string hash = algorithm.GetHash("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
23+
Assert.IsTrue(hash.Equals("80DAD3AAD8584778352C68AB06250327", StringComparison.InvariantCultureIgnoreCase));
24+
}
25+
26+
[TestMethod]
27+
public void MD5Test3()
28+
{
29+
MD5 algorithm = new MD5();
30+
string hash = algorithm.GetHash("");
31+
Assert.IsTrue(hash.Equals("D41D8CD98F00B204E9800998ECF8427E", StringComparison.InvariantCultureIgnoreCase));
32+
}
33+
34+
[TestMethod]
35+
public void MD5Test4()
36+
{
37+
MD5 algorithm = new MD5();
38+
string hash = algorithm.GetHash("The quick brown fox jumps over the lazy dog");
39+
Assert.IsTrue(hash.Equals("9E107D9D372BB6826BD81D3542A419D6", StringComparison.InvariantCultureIgnoreCase));
40+
}
41+
42+
[TestMethod]
43+
public void MD5Test5()
44+
{
45+
MD5 algorithm = new MD5();
46+
string hash = algorithm.GetHash("The quick brown fox jumps over the lazy dog.");
47+
Assert.IsTrue(hash.Equals("E4D909C290D0FB1CA068FFADDF22CBD0", StringComparison.InvariantCultureIgnoreCase));
48+
}
49+
50+
[TestMethod]
51+
public void MD5Test6()
52+
{
53+
MD5 algorithm = new MD5();
54+
string hash = algorithm.GetHash("qwertyuiopasdfghjklzxcvbnm");
55+
Assert.IsTrue(hash.Equals("E5DAAA90C369ADFD156862D6DF632DED", StringComparison.InvariantCultureIgnoreCase));
56+
}
57+
58+
[TestMethod]
59+
public void MD5Test7()
60+
{
61+
MD5 algorithm = new MD5();
62+
string hash = algorithm.GetHash("kndflkandfanqflqnwfaaknsdfjsbdfhs jasdb dasjkfbajk9u4238hrfkjdbfkndflkandfanqflqnwfaaknsdfjsbdfhs jasdb dasjkfbajk9u4238hrfkjdbfkndflkandfanqflqnwfaaknsdfjsbdfhs jasdb dasjkfbajk9u4238hrfkjdbfkndflkandfanqflqnwfaaknsdfjsbdfhs jasdb dasjkfbajk9u4238hrfkjdbfkndflkandfanqflqnwfaaknsdfjsbdfhs jasdb dasjkfbajk9u4238hrfkjdbfkndflkandfanqflqnwfaaknsdfjsbdfhs jasdb dasjkfbajk9u4238hrfkjdbfkndflkandfanqflqnwfaaknsdfjsbdfhs jasdb dasjkfbajk9u4238hrfkjdbfkndflkandfanqflqnwfaaknsdfjsbdfhs jasdb dasjkfbajk9u4238hrfkjdbfkndflkandfanqflqnwfaaknsdfjsbdfhs jasdb dasjkfbajk9u4238hrfkjdbfkndflkandfanqflqnwfaaknsdfjsbdfhs jasdb dasjkfbajk9u4238hrfkjdbfkndflkandfanqflqnwfaaknsdfjsbdfhs jasdb dasjkfbajk9u4238hrfkjdbfkndflkandfanqflqnwfaaknsdfjsbdfhs jasdb dasjkfbajk9u4238hrfkjdbfkndflkandfanqflqnwfaaknsdfjsbdfhs jasdb dasjkfbajk9u4238hrfkjdbfkndflkandfanqflqnwfaaknsdfjsbdfhs jasdb dasjkfbajk9u4238hrfkjdbfkndflkandfanqflqnwfaaknsdfjsbdfhs jasdb dasjkfbajk9u4238hrfkjdbfkndflkandfanqflqnwfaaknsdfjsbdfhs jasdb dasjkfbajk9u4238hrfkjdbfkndflkandfanqflqnwfaaknsdfjsbdfhs jasdb dasjkfbajk9u4238hrfkjdbfkndflkandfanqflqnwfaaknsdfjsbdfhs jasdb dasjkfbajk9u4238hrfkjdbfkndflkandfanqflqnwfaaknsdfjsbdfhs jasdb dasjkfbajk9u4238hrfkjdbffbekjfbwekjbfkndflkandfanqflqnwfaaknsdfjsbdfhs jasdb dasjkfbajk9u4238hrfkjdbfebfkjebgkjwebgkndflkandfanqflqnwfaaknsdfjsbdfhs jasdb dasjkfbajk9u4238hrfkjdbfkndflkandfanqflqnwfaaknsdfjsbdfhs jasdb dasjkfbajk9u4238hrfkjdbfkndflkandfanqflqnwfaaknsdfjsbdfhs jasdb dasjkfbajk9u4238hrfkjdbfkndflkandfanqflqnwfaaknsdfjsbdfhs jasdb dasjkfbajk9u4238hrfkjdbfkndflkandfanqflqnwfaaknsdfjsbdfhs jasdb dasjkfbajk9u4238hrfkjdbfkndflkandfanqflqnwfaaknsdfjsbdfhs jasdb dasjkfbajk9u4238hrfkjdbfkndflkandfanqflqnwfaaknsdfjsbdfhs jasdb dasjkfbajk9u4238hrfkjdbfkndflkandfanqflqnwfaaknsdfjsbdfhs jasdb dasjkfbajk9u4238hrfkjdbfkndflkandfanqflqnwfaaknsdfjsbdfhs jasdb dasjkfbajk9u4238hrfkjdbfkndflkandfanqflqnwfaaknsdfjsbdfhs jasdb dasjkfbajk9u4238hrfkjdbfkndflkandfanqflqnwfaaknsdfjsbdfhs jasdb dasjkfbajk9u4238hrfkjdbffbweufbweugbu");
63+
Assert.IsTrue(hash.Equals("91516cddeec3d6b4672ece1ab19f450a", StringComparison.InvariantCultureIgnoreCase));
64+
}
65+
66+
[TestMethod]
67+
public void MD5NewTest()
68+
{
69+
MD5 algorithm = new MD5();
70+
string hash = algorithm.GetHash("This is a security test");
71+
Assert.IsTrue(hash.Equals("ca84feb859d390498ab49b2aad8e4fb4", StringComparison.InvariantCultureIgnoreCase));
72+
}
73+
}
74+
}

β€ŽSecurityPackageTest/SecurityPackageTest.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
<Compile Include="ElGamalTest.cs" />
6161
<Compile Include="ExtendedEuclidTest.cs" />
6262
<Compile Include="HillCipherTest.cs" />
63+
<Compile Include="MD5Test.cs" />
6364
<Compile Include="PlayfairTest.cs" />
6465
<Compile Include="MonoalphabeticTest.cs" />
6566
<Compile Include="CeaserTest.cs" />
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

0 commit comments

Comments
 (0)