Sunday, 24 March 2019

FERMATS LITTLE THEOREM

import java.math.*;
import java.io.*;
import java.util.Scanner;
public class Main
{
public static void main(String[] args) {
   Scanner s = new Scanner(System.in);
    System.out.println("Enter a prime number");
    BigInteger a=new BigInteger(s.next());
    System.out.println("Enter a number which is co prime of above number");
    BigInteger b=new BigInteger(s.next());
    if((a.gcd(b)).intValue()==1){
        System.out.println(b.modPow(BigInteger.valueOf(a.intValue()-2),a));
        
    }
    else{
        System.out.println("Invalid input");
    }

}
}

DIFFIE HELLMAN KEY EXCHANGE

import java.math.*;
import java.io.*;
import java.util.Scanner;
public class Main
{
public static void main(String[] args) {
   Scanner s = new Scanner(System.in);
    System.out.println("Enter a public key p");
    BigInteger p=new BigInteger(s.next());
    System.out.println("Enter public key g");
    BigInteger g=new BigInteger(s.next());
    System.out.println("Enter the private key at alice side");
    BigInteger a=new BigInteger(s.next());
    System.out.println("Enter private  key at bobs side");
    BigInteger b=new BigInteger(s.next());
    BigInteger x=new BigInteger("0");
    BigInteger y=new BigInteger("0");
    
    x=g.modPow(a,p);
    System.out.println("Key generated at Alice side is: "+x);
        y=g.modPow(b,p);
    System.out.println("Key generated at Bobs side is: "+y);
    System.out.println("After key exchange :");
    System.out.println("Secret KEy shared at Alice side is: "+y.modPow(a,p));
   System.out.println("Secret KEy shared at Bobs  side is: "+x.modPow(b,p));

}
}

CHINESE REMAINDER THEOREM

import java.io.*;
import java.lang.Math;

public class Main

    static int t=1;
    int ans=0;
public static void main(String[] args) {
    int a[]={3,4,5};
    int b[]={4,5,4};
    while(true){
        int i=0;
        for( i=0;i<a.length;i++){
            if((t%a[i])!=b[i])
            break;
        }
        if(i==a.length)
        {
            System.out.println("THe MINIMUM number which satisfies condition is:"+t);break;
        }
        else{
            t++;
        }
    }
}
}

RSA ALGORITHM


import java.io.*;
import java.util.*;
import java.math.*;
import java.lang.Math;
public class Main
{
public static void main(String[] args) {
    BigInteger bi1, bi2, bi3;
    int e=0;
    Scanner s = new Scanner(System.in);
    System.out.println("Enter value of p which is prime");
    int p=s.nextInt();
    System.out.println("ENter the value of q which is prime");
    int q=s.nextInt();
  int  n=p*q;
  int phi=(p-1)*(q-1);
  bi2=new BigInteger(String.valueOf(phi));
  bi3=new BigInteger("0");
  for(int i=2;i<phi;i++){
      bi1=new BigInteger(String.valueOf(i));
      bi3=bi2.gcd(bi1);
      if((bi3).intValue()==1){
          e=i;
      break;}
  }
double d=0;
for(int i=1;i<=100;i++){
     if(((i*phi)+1)%e==0){
         d=(((i*phi)+1)/e);break;
     }
}
System.out.println("Enter value of message:");
    int m=s.nextInt();
    int c=((int)(Math.pow(Double.valueOf(m),Double.valueOf(e))))%n;
System.out.println("The ENCRYPTED MESSAGE Is:"+c);  
bi1=BigInteger.valueOf(c);
int dec=((bi1.pow((int)d)).mod(BigInteger.valueOf(n))).intValue();
System.out.println("The ORIGINAL MESSAGE Is:"+dec);
}
}

FERMATS LITTLE THEOREM

import java.math.*; import java.io.*; import java.util.Scanner; public class Main { public static void main(String[] args) {    Sca...