1
2
3
4
5
6
7 package testrsa;
8
9 import java.security.NoSuchAlgorithmException;
10 import java.util.Enumeration;
11 import java.util.Vector;
12
13 public class Main {
14
15
16 public Main() {
17 }
18
19
20 @param
21
22 public static void main(String[] args) {
23
24
25 int hauptlauf = 1;
26
27 int lauflänge = 10000;
28 int schrittlänge = 1000;
29
30
31 int keyindex = 255;
32
33 Counter richtig = new Counter();
34 Counter falsch = new Counter();
35 Counter richtighash = new Counter();
36 Counter falschhash = new Counter();
37 Hash hashtest = new Hash();
38 Vector falschstring = new Vector();
39 Vector falschstringhash = new Vector();
40 RandomString input = new RandomString();
41 RSA recipient = new RSA();
42 RSA sign = new RSA();
43
44
45 for (int haupt = 1; haupt <= hauptlauf; ++haupt) {
46 if (keyindex == 1024) {
47 keyindex = 256;
48 }
49 keyindex += 1;
50
51 System.out.println("keylength: " + keyindex);
52
53
54
55 @param
56 @param
57 @return
58 @return
59 @return
60
61 int keyLength = recipient.generateKeys(keyindex);
62
63
64 RSAToString RSAcrypt = new RSAToString(recipient);
65
66
67 System.out.println("---------------------------");
68 System.out.println("Elemente für Verschlüsselung");
69 System.out.println("D: " + recipient.getPublicKey()[0]);
70 System.out.println("E: " + recipient.getPrivateKey());
71 System.out.println("N: " + recipient.getPublicKey()[1]);
72 System.out.println("---------------------------");
73
74
75
76
77
78
79 int keyLengthsign = sign.generateKeys(keyindex);
80
81 RSAToString RSAsign = new RSAToString(sign);
82
83
84
85 System.out.println("---------------------------");
86 System.out.println("Elemente für Hashes");
87 System.out.println("D: " + sign.getPublicKey()[0]);
88 System.out.println("E: " + sign.getPrivateKey());
89 System.out.println("N: " + sign.getPublicKey()[1]);
90 System.out.println("---------------------------");
91
92
93
94 for (int j = 1; j <= lauflänge + 1; j += schrittlänge) {
95 String teststring = input.createRandomString(j);
96
97
98
99 teststring = new String(RSAcrypt.fitStringToOneSize(teststring, 16));
100
101 System.out.println("Teststring with length of " + j + ": " + teststring);
102
103 StringBuffer sbuf = new StringBuffer("");
104 for (int z = 0; z < teststring.length() / 16; z++) {
105
106 String encrypt = RSAcrypt.doEncryption(teststring.substring(16 * z, 16 * (z + 1)));
107
108 String decrypt = RSAcrypt.doDecryption(encrypt);
109
110 sbuf.append(decrypt);
111 }
112 System.out.println("Decrypt with length of " + j + ": " + sbuf.toString());
113 try {
114 String verify = hashtest.createHash(teststring);
115 System.out.println("Teststring_Hash: " + verify);
116
117 StringBuffer sverify = new StringBuffer("");
118 for (int c = 0; c < 10; c++) {
119
120
121 String signature = (RSAsign.doSign(verify.substring(c * 4, 4 * (c + 1))));
122 String checksign = RSAsign.doVerify(signature);
123 while (checksign.length() < 4) {
124 checksign = "0" + checksign;
125 }
126 sverify.append(checksign);
127 }
128 String checksign = sverify.toString();
129
130 System.out.println("Checksign: " + checksign);
131 if (verify.equals(checksign)) {
132 richtighash.erhoehe();
133 } else {
134 falschhash.erhoehe();
135 falschstringhash.add(verify);
136 }
137
138 } catch (NoSuchAlgorithmException ex) {
139 ex.printStackTrace();
140 }
141
142
143
144
145
146
147
148 @param
149 @param
150
151
152 if (teststring.trim().equals(sbuf.toString())) {
153 richtig.erhoehe();
154 } else {
155 falsch.erhoehe();
156 falschstring.addElement(teststring);
157 }
158 }
159
160
161
162
163
164 for (Enumeration el = falschstring.elements(); el.hasMoreElements();) {
165 String elment = el.nextElement().toString();
166 System.out.println("Wrong decrypted Strings: <" + elment + "> Länge: " + elment.toString().length());
167
168 }
169
170 for (Enumeration elh = falschstringhash.elements(); elh.hasMoreElements();) {
171 String elment = elh.nextElement().toString();
172 System.out.println("Wrong HASH Strings: <" + elment + "> ");
173
174 }
175 }
176
177 System.out.println("------------------------------------");
178 System.out.println("right encryptions:" + richtig.stand());
179 System.out.println("right hashes:" + richtighash.stand());
180 System.out.println("wrong encryptions:" + falsch.stand());
181 System.out.println("wrong hashes:" + falschhash.stand());
182 System.out.println("------------------------------------");
183
184
185 }
186 }
187
188