//File : AesClient.java //AesClient //Developed by Malhar Vora //Developed on : 9-5-2011 import java.io.*; import java.net.*; import java.util.*; import java.math.*; import javax.crypto.*; import java.security.*; import javax.crypto.spec.*; public class AesClient { static KeyGenerator kg = null; static Cipher c = null; static Key k = null; static byte[] ivector=null; public static void main(String []str) { String datatosend=null; try { datatosend = encryptString(getDataFromFile("Data.txt")); Frame f = new Frame(datatosend,k,ivector); sendFrame("localhost",5656,f); } catch(Exception e) { System.out.println(e); } } static String getDataFromFile(String filename) throws Exception { String str=""; Scanner sc = new Scanner(new File(filename)); while(sc.hasNextLine()) { str=str + sc.nextLine(); } sc.close(); return str; } static String encryptString(String data) throws Exception { kg = KeyGenerator.getInstance("AES"); //kg.init(128); c = Cipher.getInstance("AES/CFB/PKCS5Padding"); k = kg.generateKey(); c.init(Cipher.ENCRYPT_MODE,new SecretKeySpec("1234512345123451".getBytes(),"AES")); byte[] plaintext = data.getBytes(); byte[] ciphertext = c.doFinal(plaintext); ivector = c.getIV(); return new String(ciphertext); } static void sendFrame(String remoteaddress,int port,Frame f) throws Exception { Socket s = new Socket(remoteaddress,port); OutputStream os = s.getOutputStream(); ObjectOutputStream ous = new ObjectOutputStream(os); ous.writeObject(f); ous.close(); os.close(); s.close(); } } /***************************************************************************/ //File : AesServer.java //AESReceiver //Developed by Malhar Vora //Developed on : 9-5-2011 import java.io.*; import java.net.*; import java.util.*; import java.math.*; import javax.crypto.*; import java.security.*; import javax.crypto.spec.*; public class AesServer { public static void main(String []str)throws Exception { ServerSocket ss = new ServerSocket(5656); Socket s = null; InputStream is = null; ObjectInputStream ois = null; Frame f =null; while(true) { s=ss.accept(); is = s.getInputStream(); ois = new ObjectInputStream(is); f = (Frame)ois.readObject(); System.out.println(decryptString(f.data,f.k,new IvParameterSpec(f.iv))); break; } ois.close(); is.close(); s.close(); ss.close(); } static String decryptString(String data,Key key,IvParameterSpec ivspec)throws Exception { KeyGenerator kg = KeyGenerator.getInstance("AES"); //kg.init(128); Cipher c = Cipher.getInstance("AES/CFB/PKCS5Padding"); Key k = key; c.init(Cipher.DECRYPT_MODE,new SecretKeySpec("1234512345123451".getBytes(),"AES"),ivspec); byte[] plaintext = c.doFinal(data.getBytes()); return new String(plaintext); } } /*************************************************************************/ //File : Frame.java //Frame Class //Developed by Malhar Vora //Developed on : 9-5-2011 import java.io.*; import java.net.*; import java.util.*; import javax.crypto.*; import java.security.*; import javax.crypto.spec.*; public class Frame implements Serializable { String data; Key k; byte[] iv; Frame(String mydata,Key key,byte[] ivector) { data=mydata; k = key; if(ivector==null) { iv = null; } else { iv = new byte[ivector.length]; for(int i=0;i<ivector.length;i++) { iv[i]=ivector[i]; } } } }
Tuesday, May 10, 2011
Using AES ( CFB ) Encryption in java with Client Server
Labels:
Java
Subscribe to:
Post Comments (Atom)
i need little explanation,what does this code do and how to execute it
ReplyDeleteHello Vinayaka,
ReplyDeleteThis code contains code for a Client and a Server.
Client reads data from file called Data.txt, encrypts it using AES encryption technique and sends to server.
Server receives encrypted data sent by the client, decrypts it and display it.
where compiler this code we have a problem with frame . it not contain a main
DeleteCan you tell me a way how I can achieve encryption-decryption when there is buffering involved on sender as well as receiver and the buffer size varies according to "inputstream.read()"
ReplyDeletewhere the location of Data.txt
ReplyDeleteI know I'm 5 years late to the party, but this is such a clear, concise breakdown for the process of AES encryption that I had to thank you.
ReplyDeleteCan some1 show me how the output will look like. Thanks
ReplyDeleteHow I should connect client and server classes for execution
ReplyDelete