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);
    }
반응형