-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRSAExampleWriter.java
More file actions
41 lines (35 loc) · 1.8 KB
/
RSAExampleWriter.java
File metadata and controls
41 lines (35 loc) · 1.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import java.io.FileWriter;
import java.io.IOException;
import java.math.BigInteger;
import java.util.HashMap;
public class RSAExampleWriter {
public static void main(String[] args) {
final int expectedNumOfArgs = 4;
final int numOfArgs = args.length;
if (numOfArgs != expectedNumOfArgs) {
System.out.println("Too " + (numOfArgs < expectedNumOfArgs ? "few" : "many") + " parameters!");
System.out.println(
"Usage: java RSAExampleWriter <prime> <prime> \"<message>\" \"<character> <value> ... <character> <value>\"");
return;
}
try {
FileWriter writer = new FileWriter("example.tex");
final BigInteger p = new BigInteger(args[0]);
final BigInteger q = new BigInteger(args[1]);
final String message = args[2];
final HashMap<Character, String> cipherTable = HashMapUtils.parseMap(args[3]);
StringBuilder example = new StringBuilder(1000);
example.append(
"\\documentclass{article}\n\n\\usepackage{mathptmx}\n\n% Language setting\n\\usepackage[english]{babel}\n\n% Set page size and margins\n\n\\usepackage[a4paper,top=2cm,bottom=2cm,left=3cm,right=3cm,marginparwidth=1.75cm]{geometry}\n\n% Useful packages\n\\usepackage{amsmath}\n\n\\begin{document}\n\n\\section*{Examples}\n\n")
.append((new RSAAlgorithm(p, q)).getExample(message, cipherTable))
.append("\\end{document}");
writer.write(example.toString());
writer.close();
System.out.println("File saved successfully.");
} catch (IOException e) {
System.out.println("An error occurred while saving the file.");
e.printStackTrace();
System.exit(1);
}
}
}