class DecryptionExample {
class AddressVO {
private String tenantUserId;
private String chainName;
private String address;
// TODO: Add getter and setter methods
}
public static void main(String[] args) {
try {
// ===================== 1. Get API response =====================
// Send API request and get response
APIResult<String> response = restTemplate.postForObject(
"https://waas2-out-api.powersafe-rel.cc/api/v1/api/user/getUserAddress",
httpEntity,
APIResult.class
);
// Extract encrypted data (ensure response format matches API)
String encryptedData = response.getData();
// ===================== 2. Base64 decoding =====================
// Decode using Base64 utility class (implementation reference utility classes)
byte[] decodedBytes = Base64Util.decodeString(encryptedData);
// ===================== 3. RSA public key decryption =====================
// Use the same public key as for requests
String publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQ...";
// Perform RSA decryption
byte[] decryptedBytes = RSAUtils.decryptByPublicKey(
decodedBytes,
publicKey
);
// ===================== 4. Parse business object =====================
// Convert decrypted JSON data to business object
AddressVO address = JsonUtils.fromJson(
new String(decryptedBytes, StandardCharsets.UTF_8),
AddressVO.class
);
// ===================== 5. Use decrypted data =====================
System.out.println("Parsed address information:");
System.out.println("Merchant user ID: " + address.getTenantUserId());
System.out.println("Chain name: " + address.getChainName());
System.out.println("Wallet address: " + address.getAddress());
} catch (Exception e) {
System.err.println("\nError occurred during decryption: " + e.getMessage());
e.printStackTrace();
}
}
}