# Diffie Hellman Key Exchange Algorithm (Java)

import java.util.*;
class DiffieHellman
{
public static void main(String args[])
{
Scanner sc = new Scanner(System.in);
System.out.println(“Enter the value of Xa & Xb”);
int Xa=sc.nextInt();
int Xb=sc.nextInt();
System.out.println(“Enter a Prime no. p”);
int p=sc.nextInt();
System.out.println(“Enter Primitive Root a, such that a<p”);
int a=sc.nextInt();
int Ya=(int)((Math.pow(a,Xa))%p);
int Yb=(int)((Math.pow(a,Xb))%p);
int Ka=(int)((Math.pow(Yb,Xa))%p);
int Kb=(int)((Math.pow(Ya,Xb))%p);
if(Ka==Kb)
{
System.out.println(“Transmission successful”);
}
else
{
System.out.println(“Transmission failed”);
}
}
}

## 4 thoughts on “Diffie Hellman Key Exchange Algorithm (Java)”

1. Hey says:

Does this work??

1. Hey Aarthi, haven’t tried it for a while, but used to work when I wrote it.

2. A.Phoenix says:

Hello Mr. Gajara,
Your code is simple and easily understandable. One small suggestion would be to get the random numbers from the users and then compute Xa and Xb, and from there, it is perfect. Thank you for your code

1. Hey Alexandria,

Glad that it helps. Good suggestion, I had written this some 4 years back, haven’t been doing much coding since past 2 years. Could you just add the modification in the comment?

Also, I had prefer Darshan š