0% found this document useful (0 votes)
16 views12 pages

Lab

The document contains multiple examples of cryptographic algorithms and network communication protocols, including DES, AES, RSA, Diffie-Hellman, DSA, TCP, UDP, and SSL. Each section provides code snippets demonstrating how to implement these algorithms and protocols in Java. The examples cover key generation, encryption, decryption, and secure communication between a client and server.

Uploaded by

Ashmitha KV
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views12 pages

Lab

The document contains multiple examples of cryptographic algorithms and network communication protocols, including DES, AES, RSA, Diffie-Hellman, DSA, TCP, UDP, and SSL. Each section provides code snippets demonstrating how to implement these algorithms and protocols in Java. The examples cover key generation, encryption, decryption, and secure communication between a client and server.

Uploaded by

Ashmitha KV
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 12

1)DES:

import javax.crypto.Cipher;

import javax.crypto.KeyGenerator;

import javax.crypto.SecretKey;

import java.util.Base64;

public class DESExample {

public static void main(String[] args) throws Exception {

// Generate DES key

KeyGenerator keyGen = KeyGenerator.getInstance("DES");

keyGen.init(56); // DES key size

SecretKey secretKey = keyGen.generateKey();

String message = "Hello, DES Encryption!";

System.out.println("Original Message: " + message);

// Encrypt

Cipher cipher = Cipher.getInstance("DES");

cipher.init(Cipher.ENCRYPT_MODE, secretKey);

byte[] encryptedBytes = cipher.doFinal(message.getBytes());

String encryptedText = Base64.getEncoder().encodeToString(encryptedBytes);

System.out.println("Encrypted (DES): " + encryptedText);

// Decrypt

cipher.init(Cipher.DECRYPT_MODE, secretKey);

byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(encryptedText));

System.out.println("Decrypted (DES): " + new String(decryptedBytes));

}
2)AES:

import javax.crypto.Cipher;

import javax.crypto.KeyGenerator;

import javax.crypto.SecretKey;

import java.util.Base64;

public class AESExample {

public static void main(String[] args) throws Exception {

// Generate AES key

KeyGenerator keyGen = KeyGenerator.getInstance("AES");

keyGen.init(128); // AES key size

SecretKey secretKey = keyGen.generateKey();

String message = "Hello, AES Encryption!";

System.out.println("Original Message: " + message);

// Encrypt

Cipher cipher = Cipher.getInstance("AES");

cipher.init(Cipher.ENCRYPT_MODE, secretKey);

byte[] encryptedBytes = cipher.doFinal(message.getBytes());

String encryptedText = Base64.getEncoder().encodeToString(encryptedBytes);

System.out.println("Encrypted (AES): " + encryptedText);

// Decrypt

cipher.init(Cipher.DECRYPT_MODE, secretKey);

byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(encryptedText));

System.out.println("Decrypted (AES): " + new String(decryptedBytes));

}
3)RSA ENCRYPTION:

<!DOCTYPE html>

<html>

<head>

<title>RSA Encryption</title>

<script>

function gcd(a, b) {

while (b) {

let temp = b;

b = a % b;

a = temp;

return a;

function modInverse(e, phi) {

for (let d = 1; d < phi; d++) {

if ((e * d) % phi === 1) {

return d;

return -1;

function encrypt() {

let p = parseInt(document.getElementById("p").value);

let q = parseInt(document.getElementById("q").value);

let msg = parseInt(document.getElementById("msg").value);

if (isNaN(p) || isNaN(q) || isNaN(msg)) {

alert("Please enter valid numbers!");


return;

let n = p * q;

let phi = (p - 1) * (q - 1);

let e = 2;

while (e < phi && gcd(e, phi) !== 1) {

e++;

let d = modInverse(e, phi);

if (d === -1) {

alert("Error computing modular inverse");

return;

let cipher = Math.pow(msg, e) % n;

let decrypted = Math.pow(cipher, d) % n;

document.getElementById("publicKey").innerText = "Public Key: (" + e + ", " + n + ")";

document.getElementById("privateKey").innerText = "Private Key: " + d;

document.getElementById("cipherText").innerText = "Cipher Text: " + cipher;

document.getElementById("decryptedText").innerText = "Decrypted Message: " + decrypted;

</script>

</head>

<body>

<h2>RSA Encryption Algorithm</h2>

<label>Enter First Prime Number (p): </label>

<input type="number" id="p"><br>


<label>Enter Second Prime Number (q):</label>

<input type="number" id="q"><br>

<label>Enter the Message (as a number):</label>

<input type="number" id="msg"><br>

<button onclick="encrypt()">Apply RSA</button>

<p id="publicKey"></p>

<p id="privateKey"></p>

<p id="cipherText"></p>

<p id="decryptedText"></p>

</body>

</html>

4) Diffie Hellman:

import java.math.BigInteger;

import java.security.SecureRandom;

public class DiffieHellman {

public static void main(String[] args) {

SecureRandom random = new SecureRandom();

// Public prime (p) and base (g)

BigInteger p = new BigInteger("23"); // Prime number

BigInteger g = new BigInteger("5"); // Generator

// Private keys (chosen randomly)

BigInteger a = new BigInteger(5, random); // Private key for Alice

BigInteger b = new BigInteger(5, random); // Private key for Bob

// Public keys

BigInteger A = g.modPow(a, p); // A = g^a mod p

BigInteger B = g.modPow(b, p); // B = g^b mod p


// Shared secret key calculation

BigInteger secretKeyAlice = B.modPow(a, p); // (B^a) mod p

BigInteger secretKeyBob = A.modPow(b, p); // (A^b) mod p

// Display values

System.out.println("Public Prime (p): " + p);

System.out.println("Public Base (g): " + g);

System.out.println("Alice's Private Key: " + a);

System.out.println("Bob's Private Key: " + b);

System.out.println("Alice's Public Key (A): " + A);

System.out.println("Bob's Public Key (B): " + B);

System.out.println("Shared Secret Key (Alice): " + secretKeyAlice);

System.out.println("Shared Secret Key (Bob): " + secretKeyBob);

5)DSA:

import java.security.*;

import java.util.Scanner;

public class DigitalSignatureExample {

public static void main(String[] args) throws Exception {

Scanner sc = new Scanner(System.in);

System.out.println("Enter some text:");

String msg = sc.nextLine();

sc.close();

// Generate key pair

KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DSA");

keyGen.initialize(1024);
KeyPair pair = keyGen.generateKeyPair();

PrivateKey privKey = pair.getPrivate();

// Sign the message

Signature sign = Signature.getInstance("SHA256withDSA");

sign.initSign(privKey);

sign.update(msg.getBytes());

byte[] signature = sign.sign();

// Print signature

System.out.println("Digital Signature: " + new String(signature));

4)WIRESHARK:

TCPServer:

import java.io.*;

import java.net.*;

public class TCPServer {

public static void main(String[] args) {

try {

ServerSocket serverSocket = new ServerSocket(5000); // Server listens on port 5000

System.out.println("Server is waiting for connection...");

Socket socket = serverSocket.accept(); // Accepts client connection

System.out.println("Client connected!");

BufferedReader input = new BufferedReader(new


InputStreamReader(socket.getInputStream()));

PrintWriter output = new PrintWriter(socket.getOutputStream(), true);


String message = input.readLine(); // Receive message from client

System.out.println("Client says: " + message);

output.println("Message received: " + message); // Send response to client

socket.close();

serverSocket.close();

} catch (IOException e) {

e.printStackTrace();

TCPClient:

import java.io.*;

import java.net.*;

public class TCPClient {

public static void main(String[] args) {

try {

Socket socket = new Socket("localhost", 5000); // Connect to server on port 5000

PrintWriter output = new PrintWriter(socket.getOutputStream(), true);

BufferedReader input = new BufferedReader(new


InputStreamReader(socket.getInputStream()));

output.println("Hello, Server!"); // Send message to server

System.out.println("Server response: " + input.readLine()); // Receive response

socket.close();

} catch (IOException e) {
e.printStackTrace();

UDPServer:

import java.net.*;

public class UDPServer {

public static void main(String[] args) throws Exception {

DatagramSocket serverSocket = new DatagramSocket(5000);

byte[] buffer = new byte[1024];

DatagramPacket packet = new DatagramPacket(buffer, buffer.length);

System.out.println("UDP Server is waiting for data...");

serverSocket.receive(packet);

String message = new String(packet.getData(), 0, packet.getLength());

System.out.println("Received: " + message);

serverSocket.close();

UDPClient:

import java.net.*;

public class UDPClient {

public static void main(String[] args) throws Exception {

DatagramSocket clientSocket = new DatagramSocket();

InetAddress ip = InetAddress.getByName("localhost");

String message = "Hello, Server!";

byte[] buffer = message.getBytes();

DatagramPacket packet = new DatagramPacket(buffer, buffer.length, ip, 5000);


clientSocket.send(packet);

System.out.println("Message sent!");

clientSocket.close();

5)SSL:

Certificate:

keytool -genkeypair -keyalg RSA -alias mysslkey -keystore keystore.jks -storepass password -validity
365 -keysize 2048

SSLServer.java:

import javax.net.ssl.*;

import java.io.*;

import java.security.KeyStore;

public class SSLServer {

public static void main(String[] args) throws Exception {

// Load the keystore

KeyStore keyStore = KeyStore.getInstance("JKS");

FileInputStream keyFile = new FileInputStream("keystore.jks");

keyStore.load(keyFile, "password".toCharArray());

// Initialize key manager factory

KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance("SunX509");

keyManagerFactory.init(keyStore, "password".toCharArray());

// Initialize SSL context

SSLContext sslContext = SSLContext.getInstance("TLS");

sslContext.init(keyManagerFactory.getKeyManagers(), null, null);


// Create SSL server socket

SSLServerSocketFactory serverSocketFactory = sslContext.getServerSocketFactory();

SSLServerSocket serverSocket = (SSLServerSocket)


serverSocketFactory.createServerSocket(5000);

System.out.println("SSL Server started... Waiting for client...");

SSLSocket socket = (SSLSocket) serverSocket.accept();

System.out.println("Client connected!");

BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));

PrintWriter output = new PrintWriter(socket.getOutputStream(), true);

String message = input.readLine();

System.out.println("Client says: " + message);

output.println("Secure message received!");

socket.close();

serverSocket.close();

SSLClient.java:

import javax.net.ssl.*;

import java.io.*;

public class SSLClient {

public static void main(String[] args) throws Exception {

// Set truststore (to trust the server's certificate)

System.setProperty("javax.net.ssl.trustStore", "keystore.jks");

System.setProperty("javax.net.ssl.trustStorePassword", "password");

SSLSocketFactory socketFactory = (SSLSocketFactory) SSLSocketFactory.getDefault();


SSLSocket socket = (SSLSocket) socketFactory.createSocket("localhost", 5000);

PrintWriter output = new PrintWriter(socket.getOutputStream(), true);

BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));

output.println("Hello, Secure Server!");

System.out.println("Server response: " + input.readLine());

socket.close();

Compile:

javac SSLServer.java SSLClient.java

Run Server:

java -Djavax.net.ssl.keyStore=keystore.jks -Djavax.net.ssl.keyStorePassword=password SSLServer

Run Client:

You might also like