rendered paste bodyimport java.io.*;
import java.lang.Exception;
class Encrypt {
public static void main (String args[]) throws java.lang.Exception {
long n, e, d, ptext;
int pos;
FileReader in;
BufferedReader bufRead;
String line;
char charPtext[] = new char[3];
n = e = d = ptext = 0;
if(args.length < 2) {
System.out.println("Usage: Encrypt <plaintext> <keyfile>\n");
System.exit(-1);
}
//Read keys
in = new FileReader(args[1]);
bufRead = new BufferedReader(in);
//Read n
line = bufRead.readLine();
n = Long.parseLong(line);
//Read e
line = bufRead.readLine();
e = Long.parseLong(line);
//Read d
line = bufRead.readLine();
d = Long.parseLong(line);
System.out.println("Keys\n----\n");
System.out.println("n: "+n+"\ne: "+e+"\nd: "+d+"\n");
in = new FileReader(args[0]);
bufRead = new BufferedReader(in);
//Read plaintext
pos = 0;
int temp = bufRead.read();
while(temp > 0) {
charPtext[pos%3] = (char)temp;
if((++pos % 3) == 0) {
System.out.print(charPtext);
Encrypt(charPtext, e, n);
charPtext[0] = charPtext[1] = charPtext[2] = 0;
//Write(M);
}
temp = bufRead.read();
}
if((charPtext[0] + charPtext[1] + charPtext[2]) > 0) {
Encrypt(charPtext, e, n);
}
System.out.println();
System.out.println(expMod(2, 8, 5));
} // end main
public static long expMod(long b, long e, long n) {
String bin;
long tmp;
int i;
bin = Long.toBinaryString(b);
System.out.println(bin);
tmp = 1;
for(i = 0; i < bin.length(); i++) {
if(bin.substring(i,i+1).equals("1")) {
tmp = (tmp * tmp) % n;
tmp = (tmp * b) % n;
System.out.println("1: "+tmp);
}
else if(bin.substring(i,i+1).equals("0")) {
tmp = (tmp * tmp) % n;
System.out.println("0: "+tmp);
}
else {
System.out.println("expMod error: non binary value: " + bin.substring(i,i+1));
System.exit(-1);
}
}
return tmp;
}
public static void Encrypt(char[] M, long e, long n) {
String bin;
//Convert to long
long v = ((int)M[0] * 65536) + ((int)M[1] * 256) + (int)M[2];
//System.out.print(v + " ^ " + e + " mod " + n + " = ");
//v = expMod(v, e, n);
//System.out.println(v);
}
}// end class Encrypt