CryptolabDA 4
CryptolabDA 4
Lab Assessment 4
Exercise No 7: DSS
public static boolean verifySignature(String message, byte[] signatureBytes, PublicKey publicKey) throws Exception {
Signature verifier = Signature.getInstance("SHA256withDSA");
verifier.initVerify(publicKey);
verifier.update(message.getBytes("UTF-8"));
return verifier.verify(signatureBytes);
}
String message = "Confidential legal agreement between Party A and Party B.";
byte[] digitalSignature = signMessage(message, privateKey);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Submission on Moodle:
Output:
Exercise No 8: SSL socket communication
Aim: Develop a simple client and server application using SSL
socket communication
Code:
// SSLClient.java
import javax.net.ssl.*;
import java.io.*;
import java.security.KeyStore;
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null, tmf.getTrustManagers(), null);
socket.close();
}
}
// SSLServer.java
import javax.net.ssl.*;
import java.io.*;
import java.security.KeyStore;
Submission on Moodle:
Output:
Exercise No 9: SSH
Aim: Develop a simple client server model using telnet and capture
the packets transmitted with tshark Analyze the pcap file and get
the transmitted data (plain text) using any packet capturing library.
Implement the above scenario using SSH and observe the data
Code:
// PlainTextServer.java
import java.io.*;
import java.net.*;
String inputLine;
while ((inputLine = in.readLine()) != null) {
System.out.println("Received: " + inputLine);
out.println("Echo: " + inputLine);
}
in.close();
out.close();
clientSocket.close();
serverSocket.close();
}
}
// PlainTextClient.java
import java.io.*;
import java.net.*;
String line;
while ((line = userInput.readLine()) != null) {
out.println(line);
System.out.println("Server: " + in.readLine());
}
socket.close();
}
}
Submission on Moodle:
Output:
Exercise No 10: JSON
Code:
// JwtLoginServlet.java
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
import java.util.Date;
@WebServlet("/login")
public class JwtLoginServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("application/json");
response.getWriter().write("{\"token\": \"" + jwt + "\"}");
} else {
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
response.getWriter().write("Invalid credentials");
}
}
}
//ProtectedServlet.java
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
@WebServlet("/protected")
public class ProtectedServlet extends HttpServlet {
private static final String SECRET_KEY = "supersecretkey123";
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String authHeader = request.getHeader("Authorization");
if (authHeader != null && authHeader.startsWith("Bearer ")) {
String token = authHeader.substring(7);
try {
Claims claims = Jwts.parser()
.setSigningKey(SECRET_KEY)
.parseClaimsJws(token)
.getBody();
Output: