1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.mina.proxy;
21
22 import static org.apache.mina.proxy.utils.ByteUtilities.asHex;
23 import static org.junit.Assert.assertEquals;
24
25 import java.security.MessageDigest;
26 import java.security.NoSuchAlgorithmException;
27 import java.security.NoSuchProviderException;
28 import java.security.Security;
29
30 import org.apache.mina.proxy.utils.MD4Provider;
31 import org.junit.Before;
32 import org.junit.Test;
33
34
35
36
37
38
39
40
41 public class MD4Test {
42
43
44
45
46 @Before
47 public void setUp() throws Exception {
48 if (Security.getProvider(MD4Provider.PROVIDER_NAME) == null) {
49 System.out.print("Adding MINA provider...");
50 Security.addProvider(new MD4Provider());
51
52 }
53 }
54
55
56
57
58 @Test
59 public void testRFCVectors() throws NoSuchAlgorithmException,
60 NoSuchProviderException {
61 MessageDigest md4 = MessageDigest.getInstance("MD4",
62 MD4Provider.PROVIDER_NAME);
63 doTest(md4, "31d6cfe0d16ae931b73c59d7e0c089c0", "");
64 doTest(md4, "bde52cb31de33e46245e05fbdbd6fb24", "a");
65 doTest(md4, "a448017aaf21d8525fc10ae87aa6729d", "abc");
66 doTest(md4, "d9130a8164549fe818874806e1c7014b", "message digest");
67 doTest(md4, "d79e1c308aa5bbcdeea8ed63df412da9",
68 "abcdefghijklmnopqrstuvwxyz");
69 doTest(md4, "043f8582f241db351ce627e153e7f0e4",
70 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");
71 doTest(
72 md4,
73 "e33b4ddc9c38f2199c3e7b164fcc0536",
74 "12345678901234567890123456789012345678901234567890123456789012345678901234567890");
75 }
76
77
78
79
80
81 @Test
82 public void testWikipediaVectors() throws NoSuchAlgorithmException,
83 NoSuchProviderException {
84 MessageDigest md4 = MessageDigest.getInstance("MD4",
85 MD4Provider.PROVIDER_NAME);
86 doTest(md4, "b94e66e0817dd34dc7858a0c131d4079",
87 "Wikipedia, l'encyclopedie libre et gratuite");
88 doTest(md4, "1bee69a46ba811185c194762abaeae90",
89 "The quick brown fox jumps over the lazy dog");
90 doTest(md4, "b86e130ce7028da59e672d56ad0113df",
91 "The quick brown fox jumps over the lazy cog");
92 }
93
94
95
96
97
98
99
100
101
102 private static void doTest(MessageDigest md4, String expected,
103 String testVector) {
104 String result = asHex(md4.digest(testVector.getBytes()));
105 assertEquals(expected, result);
106 }
107 }