Chapter01/Open API
[ NCP API ] /encrypt 예시코드, /decrypt 예시코드
EmmaDev_v
2025. 6. 2. 11:17
다른 글들에서 내용은 이미 설명했고,
실제로 사용한 코드!
public String encrypt(String plainText) throws Exception {
String timestamp = String.valueOf(System.currentTimeMillis());
String urlPath = "/keys/v2/" + keyTag + "/encrypt";
String signature = generateSignature(timestamp, urlPath);
String base64PlainText = Base64.getEncoder().encodeToString(plainText.getBytes(StandardCharsets.UTF_8));
Map<String, String> requestBody = new HashMap<>();
requestBody.put("plaintext", base64PlainText);
HttpHeaders headers = getHeaders(timestamp, signature);
HttpEntity<Map<String, String>> entity = new HttpEntity<>(requestBody, headers);
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> response = restTemplate.exchange(
getEncryptUrl(),
HttpMethod.POST,
entity,
String.class
);
JsonNode rootNode = objectMapper.readTree(response.getBody());
return rootNode.path("data").path("ciphertext").asText();
}
public String decrypt(String cipherText) throws Exception {
String timestamp = String.valueOf(System.currentTimeMillis());
String urlPath = "/keys/v2/" + keyTag + "/decrypt";
String signature = generateSignature(timestamp, urlPath);
Map<String, String> requestBody = new HashMap<>();
requestBody.put("ciphertext", cipherText);
HttpHeaders headers = getHeaders(timestamp, signature);
HttpEntity<Map<String, String>> entity = new HttpEntity<>(requestBody, headers);
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> response = restTemplate.exchange(
getDecryptUrl(),
HttpMethod.POST,
entity,
String.class
);
JsonNode rootNode = objectMapper.readTree(response.getBody());
String base64Decoded = rootNode.path("data").path("plaintext").asText();
byte[] decodedBytes = Base64.getDecoder().decode(base64Decoded);
return new String(decodedBytes, StandardCharsets.UTF_8);
}
반응형