Diffie Hellman: Receiver
import java.io.*;
import java.net.*;
import java.util.*;
public class DeffieHellmanRcv {
DatagramSocket theSocket = null;
int serverPort = 9999;
Scanner sc;
int y,g,p,r2;
DatagramPacket theRecievedPacket;
DatagramPacket theSendPacket;
InetAddress clientAddress;
int clientPort;
byte[] outBuffer;
byte[] inBuffer;
public DeffieHellmanRcv()
{
try {
// create the server UDP end point
theSocket = new DatagramSocket(serverPort);
System.out.println("Bob");
} catch (SocketException ExceSocket)
{
System.out.println("Socket creation error : "+ ExceSocket.getMessage());
}
}
public void keyGen()
{
sc=new Scanner(System.in);
System.out.print("Enter p=");
p=sc.nextInt();
System.out.print("Enter g=");
g=sc.nextInt();
System.out.print("Enter y=");
y=sc.nextInt();
r2= (int)(Math.pow(g,y)) % p;
//System.out.println("R2= "+r2);
}
public void send()
{
try
{
String message =r2+"";
System.out.println("Message Send:"+message);
//System.out.println("Message sent: "+message);
outBuffer=message.getBytes();
System.out.println(message);
// send some data to the client
theSendPacket = new DatagramPacket(outBuffer, outBuffer.length, clientAddress, clientPort);
theSocket.send(theSendPacket);
}
catch (Exception e)
{
System.out.println("Error with client request : "+e);
}
// close the server socket
}
public void receive()
{
// create some space for the text to send and recieve data
outBuffer = new byte[500];
inBuffer = new byte[50];
try
{
// create a place for the client to send data too
theRecievedPacket = new DatagramPacket(inBuffer, inBuffer.length);
// wait for a client to request a connection
theSocket.receive(theRecievedPacket);
//System.out.println("Client connected");
// get the client details
clientAddress = theRecievedPacket.getAddress();
clientPort = theRecievedPacket.getPort();
String message = new String(theRecievedPacket.getData(),0,theRecievedPacket.getLength());
String sendData = message+"";
System.out.println("Message Recieved: "+message);
System.out.println(sendData);
outBuffer = sendData.getBytes();
int k2=(int)(Math.pow((Integer.parseInt(message)),y))%p;
System.out.println("\n\nk2= "+k2);
}
catch(Exception e)
{
System.out.println("E2"+e);
}
}
public static void main(String[] args)
{
DeffieHellmanRcv dr = new DeffieHellmanRcv();
dr.keyGen();
dr.receive();
dr.send();
}
}
import java.util.*;
import java.io.*;
import java.net.*;
public class DeffieHellmanSend
{
DatagramSocket theSocket = null;
int serverPort = 9999;
Scanner sc;
int x,g,p,r1;
DatagramPacket theSendPacket;
DatagramPacket theReceivedPacket;
InetAddress theServerAddress;
byte[] outBuffer;
byte[] inBuffer;
public DeffieHellmanSend()
{
try
{
theSocket = new DatagramSocket();
// but if you want to connect to your remote server, then alter the theServer address below
InetAddress theServer = InetAddress.getLocalHost();
theSocket.connect(theServer,serverPort);
System.out.println("Alice");
}
catch (SocketException ExceSocket)
{
System.out.println("Socket creation error : "+ExceSocket.getMessage());
}
catch (UnknownHostException ExceHost)
{
System.out.println("Socket host unknown : "+ExceHost.getMessage());
}
}
public void keyGen()
{
sc=new Scanner(System.in);
System.out.print("Enter p=");
p=sc.nextInt();
System.out.print("Enter g=");
g=sc.nextInt();
System.out.print("Enter x=");
x=sc.nextInt();
r1= (int)(Math.pow(g,x)) % p;
System.out.println("R1= "+r1);
}
public void send()
{
// the place to store the sending and receiving data
inBuffer = new byte[500];
outBuffer = new byte[50];
try
{
String message=r1+"";
System.out.println("Message Sent:"+message);
outBuffer = message.getBytes();
// the server details
theServerAddress = theSocket.getLocalAddress();
// build up a packet to send to the server
theSendPacket = new DatagramPacket(outBuffer, outBuffer.length, theServerAddress, serverPort);
// send the data
theSocket.send(theSendPacket);
}
catch (IOException ExceIO)
{
System.out.println("Client getting data error : "+ExceIO.getMessage());
}
}
public void receive()
{
try
{
// get the servers response within this packet
theReceivedPacket = new DatagramPacket(inBuffer, inBuffer.length);
theSocket.receive(theReceivedPacket);
// the server response is...
String message = new String(theReceivedPacket.getData(),0,theReceivedPacket.getLength());
System.out.println("Message Recieved : "+message);
int temp=(int)(Math.pow((Integer.parseInt(message)),x));
temp=temp%p;
int k1=temp;
System.out.println("The temp is : "+k1);
//int k1=Integer.parseInt((Math.pow((Integer.parseInt(message)),x))%p);
//int k1=(int)(Math.pow((Integer.parseInt(message)),x))%p;
//System.out.println("Message REcieved: "+message);
//System.out.println("\n\nk1= "+k1);
}
catch(Exception e)
{
System.out.println("E1"+e);
}
}
public static void main(String[] args)
{
DeffieHellmanSend df = new DeffieHellmanSend();
df.keyGen();
df.send();
df.receive();
}
}
Download the code from here






0 comments:
Post a Comment