-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathExp7.java
41 lines (40 loc) · 1.43 KB
/
Exp7.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import java.security.*;
import java.security.spec.*;
import java.util.*;
public class Exp7{
public static void main(String[] args){
try{
KeyPair keypair=generateKeyPair();
Scanner sc=new Scanner(System.in);
PrivateKey privatekey=keypair.getPrivate();
PublicKey publickey=keypair.getPublic();
System.out.println("Enter the message");
String msg=sc.next();
byte[] signature=sign(msg,privatekey);
System.out.println("Signature "+signature);
System.out.println("Digital Signature "+Base64.getEncoder().encodeToString(signature));
boolean verification=verify(msg,signature,publickey);
System.out.println("Signature Verification "+verification);
}
catch(Exception e){
e.printStackTrace();
}
}
public static KeyPair generateKeyPair() throws Exception{
KeyPairGenerator keypair=KeyPairGenerator.getInstance("RSA");
keypair.initialize(2048);
return keypair.generateKeyPair();
}
public static byte[] sign(String message,PrivateKey privatekey) throws Exception{
Signature sgn=Signature.getInstance("SHA256withRSA");
sgn.initSign(privatekey);
sgn.update(message.getBytes());
return sgn.sign();
}
public static boolean verify(String message,byte[] signature,PublicKey publickey) throws Exception{
Signature sgn=Signature.getInstance("SHA256withRSA");
sgn.initVerify(publickey);
sgn.update(message.getBytes());
return sgn.verify(signature);
}
}