· 7 years ago · Jan 03, 2019, 02:54 PM
1package sample;
2
3import javafx.application.Application;
4import javafx.fxml.FXMLLoader;
5import javafx.scene.Parent;
6import javafx.scene.Scene;
7import javafx.stage.Stage;
8import java.util.Scanner;
9import java.math.BigInteger;
10import java.security.SecureRandom;
11import java.util.Random;
12
13public class Main extends Application {
14
15 @Override
16 public void start(Stage primaryStage) throws Exception{
17
18 Random generator = new Random();
19
20
21
22 BigInteger p, b, c, secretKey, extraOne;
23 extraOne = new BigInteger("1");
24 Random sc = new SecureRandom();
25 secretKey = new BigInteger("1");
26 //
27 // public key calculation
28 //
29 System.out.println("secretKey = " + 2);
30 p = BigInteger.probablePrime(64, sc);
31 b = new BigInteger("3");
32 c = b.modPow(secretKey, p);
33 System.out.println("p = " + p);
34 System.out.println("b = " + b);
35 System.out.println("c = " + c);
36 //
37 // Encryption
38 //
39 System.out.print("Enter your Big Number message -->");
40 Scanner keyboard = new Scanner(System.in);
41 System.out.println("enter an integer");
42 int myint = keyboard.nextInt();
43 String s = Integer.toString(myint);
44 BigInteger X = new BigInteger(s);
45 BigInteger r = new BigInteger(64, sc);
46 BigInteger EC = X.multiply(c.modPow(r, p)).mod(p);
47 BigInteger brmodp = b.modPow(r, p);
48 System.out.println("Plaintext = " + X);
49 System.out.println("r = " + r);
50 System.out.println("EC = " + EC);
51 System.out.println("b^r mod p = " + brmodp);
52 //
53 // Decryption
54 //
55 BigInteger crmodp = brmodp.modPow(secretKey, p);
56 BigInteger d = crmodp.modInverse(p);
57 BigInteger ad = d.multiply(EC).mod(p);
58 System.out.println("\n\nc^r mod p = " + crmodp);
59 System.out.println("d = " + d);
60 System.out.println("Alice decodes: " + ad);
61
62 }
63
64
65 public static void main(String[] args) {
66
67 launch(args);
68 }
69}