Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.InputStreamReader;
- import java.rmi.Naming;
- import java.rmi.RemoteException;
- import java.security.*;
- import javax.crypto.*;
- import java.io.*;
- import java.math.*;
- import java.security.spec.RSAPublicKeySpec;
- import java.security.spec.RSAPrivateKeySpec;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- public class Client {
- protected Client() throws RemoteException {
- super();
- // TODO Auto-generated constructor stub
- }
- public static final byte[] intToByteArray(int value) {
- return new byte[] {
- (byte)(value >>> 24),
- (byte)(value >>> 16),
- (byte)(value >>> 8),
- (byte)value};
- }
- public static final int byteArrayToInt(byte [] b) {
- return (b[0] << 24)
- + ((b[1] & 0xFF) << 16)
- + ((b[2] & 0xFF) << 8)
- + (b[3] & 0xFF);
- }
- static PublicKey readKeyFromFile(String keyFileName) throws IOException {
- FileInputStream in =
- new FileInputStream(keyFileName);
- ObjectInputStream oin =
- new ObjectInputStream(new BufferedInputStream(in));
- PublicKey pubKey=null;
- try {
- BigInteger m = (BigInteger) oin.readObject();
- BigInteger e = (BigInteger) oin.readObject();
- RSAPublicKeySpec keySpec = new RSAPublicKeySpec(m, e);
- KeyFactory fact = KeyFactory.getInstance("RSA");
- pubKey = fact.generatePublic(keySpec);
- } catch (Exception e) {
- e.printStackTrace();
- throw new RuntimeException("Spurious serialisation error", e);
- } finally {
- oin.close();
- }
- return pubKey;
- }
- public static byte[] rsaEncrypt(byte[] data) throws IOException {
- try {
- PublicKey pubKey = readKeyFromFile("public.key");
- Cipher cipher = Cipher.getInstance("RSA");
- cipher.init(Cipher.ENCRYPT_MODE, pubKey);
- byte[] cipherData = cipher.doFinal(data);
- return cipherData;
- } catch(Exception e) {
- throw new RuntimeException("Spurious serialisation error", e);
- }
- }
- public static PrivateKey readKeyFromFile1(String keyFileName) throws IOException {
- FileInputStream in =
- new FileInputStream(keyFileName);
- ObjectInputStream oin =
- new ObjectInputStream(new BufferedInputStream(in));
- try {
- BigInteger m = (BigInteger) oin.readObject();
- BigInteger e = (BigInteger) oin.readObject();
- RSAPrivateKeySpec keySpec = new RSAPrivateKeySpec(m, e);
- KeyFactory fact = KeyFactory.getInstance("RSA");
- PrivateKey privKey = fact.generatePrivate(keySpec);
- return privKey;
- } catch (Exception e) {
- throw new RuntimeException("e not getting key rror", e);
- } finally {
- oin.close();
- }
- }
- public static byte[] readSecretFromFile(String secretFileName) throws IOException {
- FileInputStream in =
- new FileInputStream(secretFileName);
- DataInputStream din = new DataInputStream(in);
- try {
- //System.out.println("string m"+secretFileName);
- String m = din.readLine();
- //System.out.println(m);
- byte [] bytem = m.getBytes();
- return bytem;
- } catch (Exception e) {
- throw new RuntimeException("getting secret error", e);
- } finally {
- din.close();
- }
- }
- public static byte[] rsaDecrypt(byte[] data) throws IOException {
- try {
- //System.out.println("encrypted data");
- //System.out.println(data);
- PrivateKey privKey = readKeyFromFile1("private1.key");
- //System.out.println("read key");
- Cipher cipher = Cipher.getInstance("RSA");
- //System.out.println("instance created");
- cipher.init(Cipher.DECRYPT_MODE, privKey);
- //System.out.println("final");
- byte[] cipherData = cipher.doFinal(data);
- //System.out.println("decrypted data");
- //System.out.println(cipherData);
- return cipherData;
- } catch(Exception e) {
- throw new RuntimeException("decryption error", e);
- }
- }
- static ResultSet cand1=null;
- static int cand(ResultSet candfromserver)
- {
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- int i=0,k=0;
- int[] a= new int[10];
- try {
- while(candfromserver.next())
- {
- System.out.println();
- System.out.print("Press "+i+1);
- System.out.print("to Vote for ");
- System.out.print(candfromserver.getString(1));
- System.out.print(" ");
- System.out.print(candfromserver.getString(2));
- a[i]=candfromserver.getInt(3);
- }
- int count=0;
- while(true)
- {
- System.out.println("Please Enter your Candidate Choice");
- k=br.read();
- if(k<=i+1)
- {
- i=a[k-1];
- break;
- }
- else
- { count++;
- System.out.print("Wrong Choice Retry");
- if(count==3)
- count=cand(cand1);
- }
- }
- }
- catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return i;
- /*System.out.println();
- System.out.print(test1.getString(1));
- System.out.print(test1.getString(2));
- System.out.print(test1.getString(3));
- */
- }
- public static void saveToFile(String fileName,
- int r) throws IOException {
- ObjectOutputStream oout = new ObjectOutputStream(
- new BufferedOutputStream(new FileOutputStream(fileName)));
- try {
- oout.writeObject(r);
- } catch (Exception e) {
- throw new IOException("Unexpected error", e);
- } finally {
- oout.close();
- }
- }
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- String first,last,addr="csus";
- int m, can=0,voters=0, flag=0;
- byte[] c_secret1, enc_secret1, s_secret1, s_secret2;
- int s_sec, c_sec;
- byte[] s_secret, c_secret;
- try
- {
- byte [] bytecan1 = intToByteArray(can);
- byte [] enc_can1 = rsaEncrypt(bytecan1);
- byte [] byteAddr1 = addr.getBytes();
- byte [] enc_addr1 = rsaEncrypt(byteAddr1);
- Common sev = null;
- Common sev1 = null;
- Common sev2 = null;
- sev2 = (Common) Naming.lookup("rmi://localhost:1099/server");
- c_secret1 = readSecretFromFile("c_client_secret.txt");
- enc_secret1 = rsaEncrypt(c_secret1);
- s_secret1 = rsaDecrypt(sev2.mutualAuth(enc_secret1));
- s_secret2 = readSecretFromFile("c_server_secret.txt");
- if (byteArrayToInt(s_secret2) == byteArrayToInt(s_secret1)) {
- System.out.println("Authentication with Server is successful");
- flag = 1;
- }
- if(flag == 0) {System.out.println("Mutual Authentication Failed"); }
- else if(flag == 1){
- sev = (Common) Naming.lookup("rmi://localhost:1099/server");
- //second server
- //sev1 = (Common) Naming.lookup("rmi://localhost:1099/regserver");
- //Client clientobj = new Client();
- //System.out.println("The Client is talking to the server");
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- System.out.println("Welcome to the polling system");
- int s=1,k=0;
- int out=20;
- //try
- //{
- //cand1=sev.getcand();
- //System.out.println("data"+cand1.getInt(3));
- //}
- /* catch(Exception e)
- {
- e.printStackTrace();
- } */
- while(s==1)
- {
- //cand1=sev.getcand();
- System.out.println("Enter 1-Reg,2-poll,3-Eventpoll,4-Exit");
- k= Integer.parseInt(br.readLine());
- //System.out.println("The value of K in first");
- //System.out.println(k);
- if(k==1)
- {
- System.out.println("You are in Registration");
- System.out.println("Enter your firstname");
- //System.out.println(enc_msg);
- first=br.readLine();
- byte [] byteFirst = first.getBytes();
- byte [] enc_first = rsaEncrypt(byteFirst);
- System.out.println("Enter your Lastname");
- last=br.readLine();
- byte [] byteLast = last.getBytes();
- byte [] enc_last = rsaEncrypt(byteLast);
- System.out.println("Enter your Address");
- addr=br.readLine();
- byte [] byteAddr = addr.getBytes();
- byte [] enc_addr = rsaEncrypt(byteAddr);
- System.out.println("Enter your SSN");
- voters=Integer.parseInt(br.readLine());
- byte [] bytessn = intToByteArray(voters);
- byte [] enc_voters = rsaEncrypt(bytessn);
- //System.out.println(bytessn);
- //System.out.println(enc_voters);
- byte [] byte_out=(sev.getdata(2, enc_first, enc_last, enc_addr, enc_can1, enc_voters));
- out = byteArrayToInt (rsaDecrypt(byte_out));
- //System.out.println(out);
- if(out==7)
- System.out.println("Sussecful Registration");
- if(out==8)
- System.out.println("Not Registered");
- if(out==9)
- System.out.println("Record already exits");
- }
- if(k==2)
- {
- System.out.println("you are in Poll");
- System.out.println("Enter your firstname");
- first=br.readLine();
- byte [] byteFirst = first.getBytes();
- byte [] enc_first = rsaEncrypt(byteFirst);
- System.out.println("Enter your Lastname");
- last=br.readLine();
- byte [] byteLast = first.getBytes();
- byte [] enc_last = rsaEncrypt(byteLast);
- System.out.println("Enter your Voter_id");
- voters=Integer.parseInt(br.readLine());
- byte [] bytessn = intToByteArray(voters);
- byte [] enc_voters = rsaEncrypt(bytessn);
- can=cand(cand1);
- int test=Integer.parseInt(br.readLine());
- if(test==1)
- {
- can=1000;
- byte [] bytecan = intToByteArray(can);
- byte [] enc_can = rsaEncrypt(bytecan);
- byte [] byte_out=sev.getdata(1, enc_first, enc_last, enc_addr1, enc_can, enc_voters);
- out = byteArrayToInt (rsaDecrypt(byte_out));
- }
- if(test==2)
- {
- can=2000;
- byte [] bytecan = intToByteArray(can);
- byte [] enc_can = rsaEncrypt(bytecan);
- byte [] byte_out=sev.getdata(1,enc_first, enc_last, enc_addr1, enc_can, enc_voters);
- out = byteArrayToInt (rsaDecrypt(byte_out));
- }
- //int out=sev.getdata(2, enc_first, enc_last, enc_addr1, enc_can1, enc_voters);
- }
- if(k==3)
- {
- System.out.println("In event Poll");
- System.out.println("Enter your firstname");
- first=br.readLine();
- byte [] byteFirst = first.getBytes();
- byte [] enc_first = rsaEncrypt(byteFirst);
- System.out.println("Enter your Lastname");
- last=br.readLine();
- byte [] byteLast = first.getBytes();
- byte [] enc_last = rsaEncrypt(byteLast);
- System.out.println("Enter your Voter_id");
- voters=Integer.parseInt(br.readLine());
- byte [] bytessn = intToByteArray(voters);
- byte [] enc_voters = rsaEncrypt(bytessn);
- System.out.println("Enter 1 TO vote for school or 2 to vote for road");
- int test=Integer.parseInt(br.readLine());
- if(test==1)
- {
- can=9000;
- byte [] bytecan = intToByteArray(can);
- byte [] enc_can = rsaEncrypt(bytecan);
- byte [] byte_out=sev.getdata(3, enc_first, enc_last, enc_addr1, enc_can, enc_voters);
- out = byteArrayToInt (rsaDecrypt(byte_out));
- }
- if(test==2)
- {
- can=9001;
- byte [] bytecan = intToByteArray(can);
- byte [] enc_can = rsaEncrypt(bytecan);
- byte [] byte_out=sev.getdata(3,enc_first, enc_last, enc_addr1, enc_can, enc_voters);
- out = byteArrayToInt (rsaDecrypt(byte_out));
- }
- //System.out.println(out);
- if(out==2)
- System.out.println("Already done event polling.");
- if(out==3)
- System.out.println("Not Registered");
- if(out==1)
- System.out.println("Event polling successful");
- }
- if(k==4)
- {
- //System.out.println("before getting secret");
- s_secret=sev.getSrand();
- c_secret=sev.getCrand();
- s_sec = byteArrayToInt (rsaDecrypt(s_secret));
- c_sec = byteArrayToInt (rsaDecrypt(c_secret));
- //System.out.println(s_sec);
- saveToFile("c_server_secret.txt",s_sec);
- //System.out.println(c_sec);
- saveToFile("c_client_secret.txt",c_sec);
- System.exit(0);
- }
- }
- }
- }
- catch(Exception e)
- {
- System.out.println(e);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement