//File : AesServer.java
//AESReceiver
//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 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");
Cipher c = Cipher.getInstance("AES/CFB8/PKCS5Padding");
Key k = key;
c.init(Cipher.DECRYPT_MODE,k,ivspec);
byte[] plaintext = c.doFinal(data.getBytes());
return new String(plaintext);
}
}
/***************************************************************************/
//File : AesClient.java
//AESClient
//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 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/CFB8/PKCS5Padding");
k = kg.generateKey();
c.init(Cipher.ENCRYPT_MODE,k);
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 : Frame.java
//Frame Class
//Developed by Malhar Vora
//Developed on : 9-5-2011
import java.io.*;
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 ( CFB8 ) Encryption in java with Client Server
Labels:
Java
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.