01.
private
PrivateKey pri;
02.
private
PublicKey pub;
03.
private
Cipher cipher;
04.
05.
KeyFactory kf = KeyFactory.getInstance(
"RSA"
);
06.
byte
[] priKeyBytes = Files.readAllBytes(
new
File(
"private_key.pem"
).toPath());
07.
PKCS8EncodedKeySpec spec =
new
PKCS8EncodedKeySpec(priKeyBytes);
08.
09.
pri = kf.generatePrivate(spec);
10.
byte
[] pubKeyBytes = Files.readAllBytes(
new
File(
"public_key.pem"
).toPath());
11.
X509EncodedKeySpec pubSpec =
new
X509EncodedKeySpec(pubKeyBytes);
12.
pub = kf.generatePublic(pubSpec);
13.
14.
15.
public
String createSignature(String message)
throws
NoSuchAlgorithmException,
16.
SignatureException, IOException, InvalidKeySpecException, InvalidKeyException {
17.
Signature signature = Signature.getInstance(
"SHA256withRSA"
);
18.
signature.initSign(pri);
19.
signature.update(message.getBytes());
20.
byte
[] signatureBytes = signature.sign();
21.
String encodedSignature = Base64.getEncoder().encodeToString(signatureBytes);
22.
return
encodedSignature;
23.
}
24.
25.
26.
public
boolean
verify(String message, String signature)
throws
SignatureException,
27.
IOException, NoSuchAlgorithmException, InvalidKeySpecException, InvalidKeyException {
28.
Signature sign = Signature.getInstance(
"SHA256withRSA"
);
29.
sign.initVerify(pub);
30.
sign.update(message.getBytes(
"UTF-8"
));
31.
return
sign.verify(Base64.getDecoder().decode(signature.getBytes(
"UTF-8"
)));
32.
}