Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

This is a cryptology question. If needed, please refer to the course textbook, I

ID: 3696543 • Letter: T

Question

This is a cryptology question. If needed, please refer to the course textbook, Introduction to Modern Cryptography by Katz and Lindell, to answer the question. It should be available for reference online. Here is a link: https://drive.google.com/file/d/0B2K23P7N2S-Sc1ZOYk9ZeDJhckk/view?usp=sharing

Please answer the question fully, and with any necessary examples/proofs. Please show ALL steps and explain logic fully.

Explanation / Answer

import java.math.BigInteger; import java.util.Random; import java.io.*; public class RSA { private BigInteger p; private BigInteger q; private BigInteger N; private BigInteger phi; private BigInteger e; private BigInteger d; private int bitlength = 1024; private int blocksize = 256; //blocksize in byte private Random r; public RSA() { r = new Random(); p = BigInteger.probablePrime(bitlength, r); q = BigInteger.probablePrime(bitlength, r); N = p.multiply(q); phi = p.subtract(BigInteger.ONE).multiply(q.subtract(BigInteger.ONE)); e = BigInteger.probablePrime(bitlength/2, r); while (phi.gcd(e).compareTo(BigInteger.ONE) > 0 && e.compareTo(phi) < 0 ) { e.add(BigInteger.ONE); } d = e.modInverse(phi); } public RSA(BigInteger e, BigInteger d, BigInteger N) { this.e = e; this.d = d; this.N = N; } public static void main (String[] args) throws IOException { RSA rsa = new RSA(); DataInputStream in=new DataInputStream(System.in); String teststring ; System.out.println("Enter the plain text:"); teststring=in.readLine(); System.out.println("Encrypting String: " + teststring); System.out.println("String in Bytes: " + bytesToString(teststring.getBytes())); // encrypt byte[] encrypted = rsa.encrypt(teststring.getBytes()); System.out.println("Encrypted String in Bytes: " + bytesToString(encrypted)); // decrypt byte[] decrypted = rsa.decrypt(encrypted); System.out.println("Decrypted String in Bytes: " + bytesToString(decrypted)); System.out.println("Decrypted String: " + new String(decrypted)); } private static String bytesToString(byte[] encrypted) { String test = ""; for (byte b : encrypted) { test += Byte.toString(b); } return test; } //Encrypt message public byte[] encrypt(byte[] message) { return (new BigInteger(message)).modPow(e, N).toByteArray(); } // Decrypt message public byte[] decrypt(byte[] message) { return (new BigInteger(message)).modPow(d, N).toByteArray(); } }
Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote