keyPairGenerator.initialize(2048); // Key size
return keyPairGenerator.generateKeyPair();
} catch (Exception e) {
throw new RuntimeException(“RSA key pair generation failed”, e);
}
}
public static String sign(String data, PrivateKey privateKey) {
try {
Signature signature = Signature.getInstance(“SHA256withRSA”);
signature.initSign(privateKey);
signature.update(data.getBytes());
byte[] signatureBytes = signature.sign();
return Base64.getEncoder().encodeToString(signatureBytes);
} catch (Exception e) {
throw new RuntimeException(“RSA signing failed”, e);
}
}
public static boolean verify(String data, String signature, PublicKey publicKey) {
try {
Signature verifier = Signature.getInstance(“SHA256withRSA”);
verifier.initVerify(publicKey);
verifier.update(data.getBytes());
return verifier.verify(Base64.getDecoder().decode(signature));
} catch (Exception e) {
throw new RuntimeException(“RSA signature verification failed”, e);
}
}
public static void main(String[] args) {
String originalData = “Hello, Spring Cloud!”;
KeyPair keyPair = generateKeyPair();
String encryptedData = encrypt(originalData, keyPair.getPublic());
String decryptedData = decrypt(encryptedData, keyPair.getPrivate());
System.out.println("Original Data: " + originalData);
System.out.println("RSA Encrypted Data: " + encryptedData);
System.out.println("RSA Decrypted Data: " + decryptedData);
String signature = sign(originalData, keyPair.getPrivate());
boolean isVerified = verify(o