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: