One Time Pad Encryption Example using Java code
Write a programs to simulate encryption and decryption technique using One Time Pad, algorithm development and Communication between client and server should be done using Java server socket programming.
OneTimePad.java
package bsr;
import java.util.*;
import java.net.*;
import java.io.*;
/*A code from www.bipinrupadiya.com*/
public class OneTimePad
{
public String doEncryption(String s)
{
int i,j;
int randomBitPattern[]=new int[8];
for(i=0;i<7;i++)
{
randomBitPattern[i]=(i%2==0)?1:0;
}
char asc[]=new char[s.length()];
for(i=0;i<s.length();i++)
{
asc[i]=(char)((int)s.charAt(i));
}
//int bin[]=new int[s.length()];
BasicOperation b1=new BasicOperation();
String cipherText=new String("");
for(i=0;i<asc.length;i++)
{
int temp=(int)(asc[i]);
int len=b1.decimalToBinary(temp);
int bintemp[]=new int[7];
int xorlen;
if(len==7)
{
for(j=1;j<=len;j++)
{
bintemp[j-1]=b1.binaryArrayAtPosition(j);
}
//XOR Operation
xorlen=b1.xorop(bintemp,randomBitPattern,len);
}
else
{
//System.out.println("\n less than 7 :"+len);
bintemp[0]=0;
for(j=1;j<=len;j++)
{
bintemp[j]=b1.binaryArrayAtPosition(j);
}
//XOR Operation
xorlen=b1.xorop(bintemp,randomBitPattern,len+1);
}
int xor[]=new int[xorlen];
for(j=0;j<xorlen;j++)
{
xor[j]=b1.xorinArrayAt(j);
cipherText=cipherText+xor[j];
}
cipherText+=" ";
}
return(cipherText);
}
public String doDecryption(String s)
{
int i,j;
//char cipherChar[]=new char[(s.length()/2)];
char cipherChar[]=new char[(s.length())];
int cnt=-1;
for(i=0;i<s.length();i++)
{
//we receive only Ascii of it is allow 0 and 1, do not accept white space
//int ascii=(int)s.charAt(i);
if((int)s.charAt(i)==48 || (int)s.charAt(i)==49 || (int)s.charAt(i)==32)
{
cnt++;
cipherChar[cnt]=s.charAt(i);
}
}
String s1=new String(cipherChar);
System.out.println(" DATA is Received ::"+s1);
String s2[]=s1.split(" ");
int data[]=new int[s2.length];
for(i=0;i<s2.length;i++)
{
data[i]=Integer.parseInt(s2[i]);
}
char randomBitPattern[]=new char[7];
for(i=0;i<7;i++)
{
randomBitPattern[i]=(i%2==0)?'1':'0';
}
BasicOperation b1=new BasicOperation();
String plain=new String("");
//do the XOR Operation
for(i=0;i<s2.length;i++)
{
int xorlen=b1.xorop(s2[i],randomBitPattern);
int xor[]=new int[xorlen];
for(j=0;j<xorlen;j++)
{
xor[j]=b1.xorinArrayAt(j);
plain+=xor[j];
}
plain+=" ";
}
String p[]=plain.split(" ");
BasicOperation ob=new BasicOperation();
int decryptedChar[]=new int[p.length];
char plainTextChar[]=new char[p.length];
for(i=0;i<p.length;i++)
{
decryptedChar[i]=ob.binaryToDecimal(Integer.parseInt(p[i]));
plainTextChar[i]=(char)decryptedChar[i];
}
return(new String(plainTextChar));
}
}
import java.util.*;
import java.net.*;
import java.io.*;
/*A code from www.bipinrupadiya.com*/
public class OneTimePad
{
public String doEncryption(String s)
{
int i,j;
int randomBitPattern[]=new int[8];
for(i=0;i<7;i++)
{
randomBitPattern[i]=(i%2==0)?1:0;
}
char asc[]=new char[s.length()];
for(i=0;i<s.length();i++)
{
asc[i]=(char)((int)s.charAt(i));
}
//int bin[]=new int[s.length()];
BasicOperation b1=new BasicOperation();
String cipherText=new String("");
for(i=0;i<asc.length;i++)
{
int temp=(int)(asc[i]);
int len=b1.decimalToBinary(temp);
int bintemp[]=new int[7];
int xorlen;
if(len==7)
{
for(j=1;j<=len;j++)
{
bintemp[j-1]=b1.binaryArrayAtPosition(j);
}
//XOR Operation
xorlen=b1.xorop(bintemp,randomBitPattern,len);
}
else
{
//System.out.println("\n less than 7 :"+len);
bintemp[0]=0;
for(j=1;j<=len;j++)
{
bintemp[j]=b1.binaryArrayAtPosition(j);
}
//XOR Operation
xorlen=b1.xorop(bintemp,randomBitPattern,len+1);
}
int xor[]=new int[xorlen];
for(j=0;j<xorlen;j++)
{
xor[j]=b1.xorinArrayAt(j);
cipherText=cipherText+xor[j];
}
cipherText+=" ";
}
return(cipherText);
}
public String doDecryption(String s)
{
int i,j;
//char cipherChar[]=new char[(s.length()/2)];
char cipherChar[]=new char[(s.length())];
int cnt=-1;
for(i=0;i<s.length();i++)
{
//we receive only Ascii of it is allow 0 and 1, do not accept white space
//int ascii=(int)s.charAt(i);
if((int)s.charAt(i)==48 || (int)s.charAt(i)==49 || (int)s.charAt(i)==32)
{
cnt++;
cipherChar[cnt]=s.charAt(i);
}
}
String s1=new String(cipherChar);
System.out.println(" DATA is Received ::"+s1);
String s2[]=s1.split(" ");
int data[]=new int[s2.length];
for(i=0;i<s2.length;i++)
{
data[i]=Integer.parseInt(s2[i]);
}
char randomBitPattern[]=new char[7];
for(i=0;i<7;i++)
{
randomBitPattern[i]=(i%2==0)?'1':'0';
}
BasicOperation b1=new BasicOperation();
String plain=new String("");
//do the XOR Operation
for(i=0;i<s2.length;i++)
{
int xorlen=b1.xorop(s2[i],randomBitPattern);
int xor[]=new int[xorlen];
for(j=0;j<xorlen;j++)
{
xor[j]=b1.xorinArrayAt(j);
plain+=xor[j];
}
plain+=" ";
}
String p[]=plain.split(" ");
BasicOperation ob=new BasicOperation();
int decryptedChar[]=new int[p.length];
char plainTextChar[]=new char[p.length];
for(i=0;i<p.length;i++)
{
decryptedChar[i]=ob.binaryToDecimal(Integer.parseInt(p[i]));
plainTextChar[i]=(char)decryptedChar[i];
}
return(new String(plainTextChar));
}
}
BasicOperation.java
package bsr;
/*A code from www.bipinrupadiya.com*/
public class BasicOperation
{
int bin[] = new int[100];
int xor[] = new int[100];
int temp1[] = new int[100];
int temp2[] = new int[100];
int len;
int xorlen;
//convert binary number to decimal number
public int binaryToDecimal(int myNum)
{
int dec=0,no,i,n=0;
no=myNum;
//Find total digit of no of inupted number
while(no>0)
{
n++;
no=no/10;
}
//Convert inputed number into decimal
no=myNum;
for(i=0;i<n;i++)
{
int temp=no%10;
dec=dec+temp*((int)Math.pow(2,i));
no=no/10;
}
return dec;
}
//convert decimal number to binary number
public int decimalToBinary(int myNum)
{
int j,i=-1,no,n,temp=0;
no=myNum;
int t[]=new int[100];
while(no>0)
{
i++;
temp=no%2;
t[i]=temp;
no=no/2;
}
len=(i+1);
j=-1;
for(i=len;i>=0;i--)
{
j++;
bin[j]=t[i];
}
return len;
}
//find the specific bit value of binary number at given position
public int binaryArrayAtPosition(int pos)
{
return bin[pos];
}
public int xorinArrayAt(int pos)
{
return xor[pos];
}
//perform the binary X-OR operation
public int xorop(int a[],int b[],int arrlen)
{
int i;
for(i=0;i<arrlen;i++)
{
xor[i]=(a[i]==b[i])?0:1;
}
xorlen=i;
return xorlen;
}
//perform the binary X-OR operation
public int xorop(String s,char c[])
{
int temp,i=-1,cnt=-1;
for(i=0;i<s.length();i++)
{
xor[i]=(s.charAt(i)==c[i])?0:1;
}
xorlen=i;
return xorlen;
}
public int getLen()
{
return len+1;
}
//display binary bit pattern or the array
public void displayBinaryArray()
{
for(int i=0;i<=len;i++)
{
System.out.println("\n Binary Array :"+bin[i]);
}
}
}
/*A code from www.bipinrupadiya.com*/
public class BasicOperation
{
int bin[] = new int[100];
int xor[] = new int[100];
int temp1[] = new int[100];
int temp2[] = new int[100];
int len;
int xorlen;
//convert binary number to decimal number
public int binaryToDecimal(int myNum)
{
int dec=0,no,i,n=0;
no=myNum;
//Find total digit of no of inupted number
while(no>0)
{
n++;
no=no/10;
}
//Convert inputed number into decimal
no=myNum;
for(i=0;i<n;i++)
{
int temp=no%10;
dec=dec+temp*((int)Math.pow(2,i));
no=no/10;
}
return dec;
}
//convert decimal number to binary number
public int decimalToBinary(int myNum)
{
int j,i=-1,no,n,temp=0;
no=myNum;
int t[]=new int[100];
while(no>0)
{
i++;
temp=no%2;
t[i]=temp;
no=no/2;
}
len=(i+1);
j=-1;
for(i=len;i>=0;i--)
{
j++;
bin[j]=t[i];
}
return len;
}
//find the specific bit value of binary number at given position
public int binaryArrayAtPosition(int pos)
{
return bin[pos];
}
public int xorinArrayAt(int pos)
{
return xor[pos];
}
//perform the binary X-OR operation
public int xorop(int a[],int b[],int arrlen)
{
int i;
for(i=0;i<arrlen;i++)
{
xor[i]=(a[i]==b[i])?0:1;
}
xorlen=i;
return xorlen;
}
//perform the binary X-OR operation
public int xorop(String s,char c[])
{
int temp,i=-1,cnt=-1;
for(i=0;i<s.length();i++)
{
xor[i]=(s.charAt(i)==c[i])?0:1;
}
xorlen=i;
return xorlen;
}
public int getLen()
{
return len+1;
}
//display binary bit pattern or the array
public void displayBinaryArray()
{
for(int i=0;i<=len;i++)
{
System.out.println("\n Binary Array :"+bin[i]);
}
}
}
MySocket.java
package bsr;
/*A code from www.bipinrupadiya.com*/
import java.util.*;
import java.net.*;
import java.io.*;
public class MySocket
{
String serverName;
int port;
String frame;
public MySocket()
{
this.serverName="localhost";
this.port=6061;
this.frame="BipinRupadiya";
}
public MySocket(int port)
{
this.port=port;
}
public MySocket(String serverName,int port,String frame)
{
this.serverName=serverName;
this.port=port;
this.frame=frame;
}
public void sendFrame(String frame) throws Exception
{
ServerSocket ss=new ServerSocket(port);
Socket s=ss.accept();
byte bFrame[]=frame.getBytes();
OutputStream os=s.getOutputStream();
os.write(bFrame);
ss.close();
s.close();
}
public String receiveFrame() throws Exception
{
Socket s=new Socket(serverName,port);
InputStream is=s.getInputStream();
BufferedReader br=new BufferedReader(new InputStreamReader(is));
String str=br.readLine();
s.close();
return(str);
}
}
/*A code from www.bipinrupadiya.com*/
import java.util.*;
import java.net.*;
import java.io.*;
public class MySocket
{
String serverName;
int port;
String frame;
public MySocket()
{
this.serverName="localhost";
this.port=6061;
this.frame="BipinRupadiya";
}
public MySocket(int port)
{
this.port=port;
}
public MySocket(String serverName,int port,String frame)
{
this.serverName=serverName;
this.port=port;
this.frame=frame;
}
public void sendFrame(String frame) throws Exception
{
ServerSocket ss=new ServerSocket(port);
Socket s=ss.accept();
byte bFrame[]=frame.getBytes();
OutputStream os=s.getOutputStream();
os.write(bFrame);
ss.close();
s.close();
}
public String receiveFrame() throws Exception
{
Socket s=new Socket(serverName,port);
InputStream is=s.getInputStream();
BufferedReader br=new BufferedReader(new InputStreamReader(is));
String str=br.readLine();
s.close();
return(str);
}
}
sender.java
import bsr.*;
/*A code from www.bipinrupadiya.com*/
public class sender
{
public static void main(String args[])throws Exception
{
String myString="BipinRupadiya";
/*
// read data from user
Scanner sc=new Scanner(System.in);
System.out.println("Enter String(only alphabets allowed) :");
myString=sc.next();
*/
OneTimePad obj = new OneTimePad();
String encryptedString=obj.doEncryption(myString);
System.out.println("\nEncryted String : "+encryptedString);
MySocket m = new MySocket();
m.sendFrame(encryptedString);
}
}
public class sender
{
public static void main(String args[])throws Exception
{
String myString="BipinRupadiya";
/*
// read data from user
Scanner sc=new Scanner(System.in);
System.out.println("Enter String(only alphabets allowed) :");
myString=sc.next();
*/
OneTimePad obj = new OneTimePad();
String encryptedString=obj.doEncryption(myString);
System.out.println("\nEncryted String : "+encryptedString);
MySocket m = new MySocket();
m.sendFrame(encryptedString);
}
}
receiver.java
import bsr.*;
public class receiver
{
public static void main(String args[])throws Exception
{
OneTimePad obj = new OneTimePad();
MySocket m = new MySocket();
String encryptedString=m.receiveFrame();
String decryptedString=obj.doDecryption(encryptedString);
System.out.println("\nDecryted String : "+decryptedString);
}
}
public class receiver
{
public static void main(String args[])throws Exception
{
OneTimePad obj = new OneTimePad();
MySocket m = new MySocket();
String encryptedString=m.receiveFrame();
String decryptedString=obj.doDecryption(encryptedString);
System.out.println("\nDecryted String : "+decryptedString);
}
}
To execute this code
- compile bsr package
- compile sender.java
- compile receiver.java
- open two command prompt
- in 1st command prompt execute sender.java
- in 2nd command prompt execute receiver.java
Subscribe to:
Post Comments (Atom)
Subjects
- WordPress
- Mobile Computing-4649303 Practical Solution
- Android Programming New Syllabus Theory
- PHP LAMP Question Bank
- PHP LAMP Theory
- Step by Step Android Example
- Android Practical
- Android Theory
- Android Question Bank
- Networking FON Practical
- Networking FON Theory
- OS Practical
- OS Theory
- HTML
- JavaScript
- J2EE WTAD Theory
- J2EE WTAD Question Bank
- J2EE WTAD Quick Guide
- J2EE WTAD GTU Papers
- J2EE WTAD Practical
- Python
- JAVA Theory
- JAVA Practical
- MIS
Categories
- Android (55)
- c (11)
- Configure Tomcat7 (2)
- CSS (3)
- Decryption (16)
- Difference (1)
- Encryption (16)
- Error Detection and Correction Techniques (3)
- FON (27)
- Framing Technic (2)
- install Tomcat (2)
- J2EE (29)
- JAVA (13)
- JavaScript (19)
- linux (8)
- OS (17)
- PHP (11)
- Protocol (3)
- SERVER SOCKET PROGRAMING (7)
- Servlet (13)
- shell script (33)
- unix (22)
- WTAD (34)
Blog Archive
-
▼
2013
(64)
-
▼
June
(25)
- Example of command line argument in C on Linux
- Example of command line argument in Java
- AES with CBC mode example in Java
- AES with CFM mode example in Java
- AES with ECB mode example in Java
- 3DES with CFM mode example in Java
- 3DES with CBC mode example in Java
- 3DES with ECB mode example in Java
- RSA Encryption Example in Java
- JSP JDBC Example
- example of preparedstatement in java
- example of page directive in jsp
- example of jsp scripting elements
- Example of requestdispatcher
- JSTL standard tag library Example
- DES with CBC mode example in Java
- DES with CFM mode example in Java
- DES with ECB mode example in Java
- One Time Pad Encryption Example using Java code
- S-Box Example using Java
- P-Box Example using Java
- Transposition cipher example using Java
- Mono-alphabetic Substitution Cipher example using ...
- Generalized Caesar Cipher example using java
- java socket programming example
-
▼
June
(25)
Total Pageviews
© BipinRupadiya.com. Powered by Blogger.
1 comments:
Very Nice program sir...keep it up...thanx for sharing
Post a Comment