Advertisement
Guest User

sandeep

a guest
Apr 29th, 2010
255
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 12.12 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.InputStreamReader;
  3. import java.rmi.Naming;
  4. import java.rmi.RemoteException;
  5. import java.security.*;
  6. import javax.crypto.*;
  7. import java.io.*;
  8. import java.math.*;
  9. import java.security.spec.RSAPublicKeySpec;
  10. import java.security.spec.RSAPrivateKeySpec;
  11. import java.sql.ResultSet;
  12. import java.sql.SQLException;
  13.  
  14.  
  15. public class Client {
  16.     protected Client() throws RemoteException {
  17.         super();
  18.         // TODO Auto-generated constructor stub
  19.     }
  20.  
  21. public static final byte[] intToByteArray(int value) {
  22.         return new byte[] {
  23.                 (byte)(value >>> 24),
  24.                 (byte)(value >>> 16),
  25.                 (byte)(value >>> 8),
  26.                 (byte)value};
  27. }
  28.  
  29. public static final int byteArrayToInt(byte [] b) {
  30.         return (b[0] << 24)
  31.                 + ((b[1] & 0xFF) << 16)
  32.                 + ((b[2] & 0xFF) << 8)
  33.                 + (b[3] & 0xFF);
  34. }
  35.  
  36.  
  37. static PublicKey readKeyFromFile(String keyFileName) throws IOException {
  38.   FileInputStream in =
  39.     new FileInputStream(keyFileName);
  40.   ObjectInputStream oin =
  41.     new ObjectInputStream(new BufferedInputStream(in));
  42.   PublicKey pubKey=null;
  43.   try {
  44.     BigInteger m = (BigInteger) oin.readObject();
  45.     BigInteger e = (BigInteger) oin.readObject();
  46.     RSAPublicKeySpec keySpec = new RSAPublicKeySpec(m, e);
  47.     KeyFactory fact = KeyFactory.getInstance("RSA");
  48.     pubKey = fact.generatePublic(keySpec);
  49.   } catch (Exception e) {
  50.       e.printStackTrace();
  51. throw new RuntimeException("Spurious serialisation error", e);
  52.   } finally {
  53.     oin.close();
  54.   }
  55.   return pubKey;
  56.  
  57. }
  58. public static byte[] rsaEncrypt(byte[] data) throws IOException {
  59. try {
  60.   PublicKey pubKey = readKeyFromFile("public.key");
  61.   Cipher cipher = Cipher.getInstance("RSA");
  62.   cipher.init(Cipher.ENCRYPT_MODE, pubKey);
  63.   byte[] cipherData = cipher.doFinal(data);
  64.   return cipherData;
  65. } catch(Exception e) {
  66.     throw new RuntimeException("Spurious serialisation error", e);
  67.   }
  68. }
  69.  
  70. public static PrivateKey readKeyFromFile1(String keyFileName) throws IOException {
  71.    FileInputStream in =
  72.     new FileInputStream(keyFileName);
  73.   ObjectInputStream oin =
  74.     new ObjectInputStream(new BufferedInputStream(in));
  75.   try {
  76.     BigInteger m = (BigInteger) oin.readObject();
  77.     BigInteger e = (BigInteger) oin.readObject();
  78.     RSAPrivateKeySpec keySpec = new RSAPrivateKeySpec(m, e);
  79.     KeyFactory fact = KeyFactory.getInstance("RSA");
  80.     PrivateKey privKey = fact.generatePrivate(keySpec);
  81.     return privKey;
  82.   } catch (Exception e) {
  83.     throw new RuntimeException("e not getting key rror", e);
  84.   } finally {
  85.     oin.close();
  86.   }
  87. }  
  88.  
  89. public static byte[] readSecretFromFile(String secretFileName) throws IOException {
  90.    FileInputStream in =
  91.     new FileInputStream(secretFileName);
  92.  
  93. DataInputStream din = new DataInputStream(in);
  94.   try {
  95. //System.out.println("string m"+secretFileName);
  96.     String m = din.readLine();
  97. //System.out.println(m);
  98.     byte [] bytem = m.getBytes();
  99.     return bytem;
  100.   } catch (Exception e) {
  101.     throw new RuntimeException("getting secret error", e);
  102.   } finally {
  103.     din.close();
  104.   }
  105. }  
  106.  
  107.  
  108. public static byte[] rsaDecrypt(byte[] data) throws IOException  {
  109. try {
  110. //System.out.println("encrypted data");
  111. //System.out.println(data);
  112.   PrivateKey privKey = readKeyFromFile1("private1.key");
  113. //System.out.println("read key");
  114.   Cipher cipher = Cipher.getInstance("RSA");
  115. //System.out.println("instance created");
  116.   cipher.init(Cipher.DECRYPT_MODE, privKey);
  117. //System.out.println("final");
  118.   byte[] cipherData = cipher.doFinal(data);
  119. //System.out.println("decrypted data");
  120. //System.out.println(cipherData);
  121.   return cipherData;
  122. } catch(Exception e) {
  123.     throw new RuntimeException("decryption error", e);
  124.   }
  125.  
  126. }
  127. static ResultSet cand1=null;
  128. static int cand(ResultSet candfromserver)
  129. {
  130.     BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  131.  
  132.     int i=0,k=0;
  133.     int[] a= new int[10];
  134.      try {
  135.             while(candfromserver.next())
  136.             {
  137.              System.out.println();
  138.          System.out.print("Press  "+i+1);
  139.          System.out.print("to Vote for  ");
  140.          System.out.print(candfromserver.getString(1));
  141.          System.out.print("  ");
  142.          System.out.print(candfromserver.getString(2));
  143.          a[i]=candfromserver.getInt(3);
  144.             }
  145.             int count=0;
  146.             while(true)
  147.             {
  148.                
  149.             System.out.println("Please Enter your Candidate Choice");
  150.             k=br.read();
  151.             if(k<=i+1) 
  152.             {
  153.             i=a[k-1];
  154.             break;
  155.             }
  156.             else
  157.             {   count++;
  158.                 System.out.print("Wrong Choice Retry");
  159.                 if(count==3)
  160.                     count=cand(cand1);
  161.                    
  162.                
  163.             }
  164.             }
  165.          
  166.      }
  167.             catch (Exception e) {
  168.         // TODO Auto-generated catch block
  169.         e.printStackTrace();
  170.     }
  171.     return i;
  172.    
  173.    
  174.      /*System.out.println();
  175.      System.out.print(test1.getString(1));
  176.      System.out.print(test1.getString(2));
  177.      System.out.print(test1.getString(3));
  178.      */
  179.  
  180. }
  181.  
  182. public static void saveToFile(String fileName,
  183.   int r) throws IOException {
  184.   ObjectOutputStream oout = new ObjectOutputStream(
  185.     new BufferedOutputStream(new FileOutputStream(fileName)));
  186.   try {
  187. oout.writeObject(r);
  188.  
  189.   } catch (Exception e) {
  190.     throw new IOException("Unexpected error", e);
  191.   } finally {
  192.     oout.close();
  193.   }
  194. }  
  195.  
  196.     /**
  197.      * @param args
  198.      */
  199.     public static void main(String[] args) {
  200.         // TODO Auto-generated method stub
  201.         String first,last,addr="csus";
  202.         int m, can=0,voters=0, flag=0;
  203. byte[] c_secret1, enc_secret1, s_secret1, s_secret2;
  204. int s_sec, c_sec;
  205. byte[] s_secret, c_secret;
  206.  
  207.         try
  208.         {
  209. byte [] bytecan1 = intToByteArray(can);
  210. byte [] enc_can1 = rsaEncrypt(bytecan1);
  211. byte [] byteAddr1 = addr.getBytes();
  212. byte [] enc_addr1 = rsaEncrypt(byteAddr1);
  213.  
  214.  
  215.             Common sev = null;
  216.             Common sev1 = null;
  217.             Common sev2 = null;
  218.             sev2 = (Common) Naming.lookup("rmi://localhost:1099/server");
  219. c_secret1 = readSecretFromFile("c_client_secret.txt");
  220. enc_secret1 = rsaEncrypt(c_secret1);
  221. s_secret1 = rsaDecrypt(sev2.mutualAuth(enc_secret1));
  222. s_secret2 = readSecretFromFile("c_server_secret.txt");
  223. if (byteArrayToInt(s_secret2) == byteArrayToInt(s_secret1)) {
  224. System.out.println("Authentication with Server is successful");
  225. flag = 1;
  226. }
  227. if(flag == 0) {System.out.println("Mutual Authentication Failed"); }
  228. else if(flag == 1){
  229. sev = (Common) Naming.lookup("rmi://localhost:1099/server");
  230.             //second server
  231.             //sev1 = (Common) Naming.lookup("rmi://localhost:1099/regserver");
  232.             //Client clientobj = new Client();
  233.             //System.out.println("The Client is talking to the server");
  234.             BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  235.             System.out.println("Welcome to the polling system");
  236.             int s=1,k=0;
  237.             int out=20;
  238.            
  239.                 //try
  240.             //{
  241.                 //cand1=sev.getcand();
  242.                 //System.out.println("data"+cand1.getInt(3));
  243.            
  244.             //}
  245.             /* catch(Exception e)
  246.             {
  247.                 e.printStackTrace();
  248.             } */
  249.            
  250.            
  251.             while(s==1)
  252.             {
  253.                  //cand1=sev.getcand();
  254.                     System.out.println("Enter 1-Reg,2-poll,3-Eventpoll,4-Exit");
  255.                    
  256.                     k=  Integer.parseInt(br.readLine());
  257.                     //System.out.println("The value of K in first");
  258.                     //System.out.println(k);
  259.                     if(k==1)
  260.                     {
  261.                         System.out.println("You are in Registration");
  262.                         System.out.println("Enter your firstname");
  263.                         //System.out.println(enc_msg);
  264.                         first=br.readLine();
  265.                             byte [] byteFirst = first.getBytes();
  266.                             byte [] enc_first = rsaEncrypt(byteFirst);
  267.  
  268.                             System.out.println("Enter your Lastname");
  269.                             last=br.readLine();
  270.                             byte [] byteLast = last.getBytes();
  271.                             byte [] enc_last = rsaEncrypt(byteLast);
  272.  
  273.                             System.out.println("Enter your Address");
  274.                             addr=br.readLine();
  275.                             byte [] byteAddr = addr.getBytes();
  276.                             byte [] enc_addr = rsaEncrypt(byteAddr);
  277.  
  278.                             System.out.println("Enter your SSN");
  279.                             voters=Integer.parseInt(br.readLine());
  280.                             byte [] bytessn = intToByteArray(voters);
  281.                             byte [] enc_voters = rsaEncrypt(bytessn);
  282.                             //System.out.println(bytessn);
  283.                             //System.out.println(enc_voters);
  284.                             byte [] byte_out=(sev.getdata(2, enc_first, enc_last, enc_addr, enc_can1, enc_voters));
  285.                         out = byteArrayToInt (rsaDecrypt(byte_out));
  286.                             //System.out.println(out);
  287.                         if(out==7)
  288.                          System.out.println("Sussecful Registration");
  289.                         if(out==8)
  290.                              System.out.println("Not Registered");
  291.                         if(out==9)
  292.                              System.out.println("Record already exits");
  293.                     }
  294.                    
  295.                     if(k==2)
  296.                     {
  297.                             System.out.println("you are in Poll");
  298.                             System.out.println("Enter your firstname");
  299.                             first=br.readLine();
  300.                                     byte [] byteFirst = first.getBytes();
  301.                                     byte [] enc_first = rsaEncrypt(byteFirst);
  302.  
  303.                             System.out.println("Enter your Lastname");
  304.                             last=br.readLine();
  305.                             byte [] byteLast = first.getBytes();
  306.                             byte [] enc_last = rsaEncrypt(byteLast);
  307.  
  308.                             System.out.println("Enter your Voter_id");
  309.                             voters=Integer.parseInt(br.readLine());
  310.                             byte [] bytessn = intToByteArray(voters);
  311.                             byte [] enc_voters = rsaEncrypt(bytessn);
  312.                            
  313.                               can=cand(cand1);
  314.                             int test=Integer.parseInt(br.readLine());
  315.                         if(test==1)
  316.                         {
  317.                             can=1000;
  318.                             byte [] bytecan = intToByteArray(can);
  319.                             byte [] enc_can = rsaEncrypt(bytecan);
  320.                             byte [] byte_out=sev.getdata(1, enc_first, enc_last, enc_addr1, enc_can, enc_voters);
  321.                         out = byteArrayToInt (rsaDecrypt(byte_out));
  322.  
  323.                         }
  324.                         if(test==2)
  325.                         {
  326.                             can=2000;
  327.                             byte [] bytecan = intToByteArray(can);
  328.                             byte [] enc_can = rsaEncrypt(bytecan);
  329.                             byte [] byte_out=sev.getdata(1,enc_first, enc_last, enc_addr1, enc_can, enc_voters);
  330.                         out = byteArrayToInt (rsaDecrypt(byte_out));
  331.  
  332.                         }
  333.                            
  334.                         //int out=sev.getdata(2, enc_first, enc_last, enc_addr1, enc_can1, enc_voters);
  335.                     }
  336.                     if(k==3)
  337.                     {
  338.                         System.out.println("In event Poll");
  339.                         System.out.println("Enter your firstname");
  340.                         first=br.readLine();
  341.                                 byte [] byteFirst = first.getBytes();
  342.                                 byte [] enc_first = rsaEncrypt(byteFirst);
  343.  
  344.                         System.out.println("Enter your Lastname");
  345.                         last=br.readLine();
  346.                         byte [] byteLast = first.getBytes();
  347.                         byte [] enc_last = rsaEncrypt(byteLast);
  348.  
  349.                         System.out.println("Enter your Voter_id");
  350.                         voters=Integer.parseInt(br.readLine());
  351.                         byte [] bytessn = intToByteArray(voters);
  352.                         byte [] enc_voters = rsaEncrypt(bytessn);
  353.                         System.out.println("Enter 1 TO vote for school or 2 to vote for road");
  354.                         int test=Integer.parseInt(br.readLine());
  355.                        
  356.                         if(test==1)
  357.                         {
  358.                             can=9000;
  359.                             byte [] bytecan = intToByteArray(can);
  360.                             byte [] enc_can = rsaEncrypt(bytecan);
  361.                             byte [] byte_out=sev.getdata(3, enc_first, enc_last, enc_addr1, enc_can, enc_voters);
  362.                         out = byteArrayToInt (rsaDecrypt(byte_out));
  363.                         }
  364.                         if(test==2)
  365.                         {
  366.                             can=9001;
  367.                             byte [] bytecan = intToByteArray(can);
  368.                             byte [] enc_can = rsaEncrypt(bytecan);
  369.                             byte [] byte_out=sev.getdata(3,enc_first, enc_last, enc_addr1, enc_can, enc_voters);
  370.                         out = byteArrayToInt (rsaDecrypt(byte_out));
  371.  
  372.                         }
  373. //System.out.println(out);
  374.                         if(out==2)
  375.                          System.out.println("Already done event polling.");
  376.                         if(out==3)
  377.                              System.out.println("Not Registered");
  378.                         if(out==1)
  379.                              System.out.println("Event polling successful");
  380.  
  381.                     }
  382.                 if(k==4)
  383.                 {
  384. //System.out.println("before getting secret");
  385. s_secret=sev.getSrand();
  386. c_secret=sev.getCrand();
  387. s_sec = byteArrayToInt (rsaDecrypt(s_secret));
  388. c_sec = byteArrayToInt (rsaDecrypt(c_secret));
  389. //System.out.println(s_sec);
  390. saveToFile("c_server_secret.txt",s_sec);
  391. //System.out.println(c_sec);
  392. saveToFile("c_client_secret.txt",c_sec);
  393. System.exit(0);
  394.                 }
  395.                    
  396.             }
  397. }
  398.  
  399.  
  400.         }
  401.  
  402.                    
  403.        
  404.         catch(Exception e)
  405.         {
  406.             System.out.println(e);
  407.         }
  408.  
  409.     }
  410.  
  411. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement