1// Aim: Program to perform MD5 hash with DSA (MD5 Hash with DSA).
2
3
4import java.util.*;
5import java.security.*;
6
7public class md5_dsa {
8 public static void main(String[] args) throws Exception {
9 Scanner sc = new Scanner(System.in);
10 System.out.print("enter the message :");
11 String text = sc.nextLine();
12 MessageDigest m = MessageDigest.getInstance("MD5");
13 byte[] digest = m.digest(text.getBytes());
14 System.out.println("MD5 :"+Base64.getEncoder().encodeToString(digest));
15 StringBuilder hex = new StringBuilder();
16 for(byte b : digest){
17 String h =String.format("%2x",b);
18 hex.append(h);
19 }
20 System.out.println("hex :"+hex);
21
22 KeyPairGenerator keypgen = KeyPairGenerator.getInstance("DSA");
23 keypgen.initialize(2048);
24 KeyPair keys = keypgen.generateKeyPair();
25 PrivateKey pri = keys.getPrivate();
26 PublicKey pub = keys.getPublic();
27
28 System.out.println("DSA Private key :"+ Base64.getEncoder().encodeToString(pri.getEncoded()));
29 System.out.println("DSA Public key :"+ Base64.getEncoder().encodeToString(pub.getEncoded()));
30
31 Signature sig = Signature.getInstance("SHA256withDSA");
32 sig.initSign(pri);
33 sig.update(digest);
34 byte[] digital = sig.sign();
35 System.out.println("Digital Signature : "+Base64.getEncoder().encodeToString(digital));
36
37 sig.initVerify(pub);
38 sig.update(digest);
39 boolean isverified = sig.verify(digital);
40 System.out.println("Signature verified :"+isverified);
41
42 sc.close();
43
44 }
45}
46