Encrypt

Prev Next

Classic/VPC 환경에서 이용 가능합니다.

키의 현재 버전으로 최대 32 KB 크기의 데이터를 암호화합니다. AES256 또는 RSA2048 키 타입으로만 요청할 수 있습니다.

요청

요청 형식을 설명합니다. 요청 형식은 다음과 같습니다.

메서드 URI
POST /kms/v1/keys/{keyTag}/encrypt

요청 헤더

Key Management Service API에서 공통으로 사용하는 헤더에 대한 정보는 Key Management Service 요청 헤더에서 계정 인증 방식을 참조해 주십시오.

요청 경로 파라미터

요청 경로 파라미터에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
keyTag String Required 키 태그
  • 키 이름에서 파생된 키의 고유 식별자
  • Get Key List 참조
  • REST API로 암호화 또는 복호화 요청 시 사용
  • 키 태그는 기밀 정보로 취급되지 않음

요청 바디

요청 바디에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
plaintext String 또는 Array[String] Required Base64로 인코딩된 문자열 데이터
  • 최대 32 KB 데이터 암호화 가능
context String Conditional Base64로 인코딩된 문자열 데이터
  • 수렴 암호화(convergent encryption)가 적용된 키 사용 시 필수 입력
  • 최대 50 바이트 입력 가능
  • 같은 데이터를 여러 번 암호화하더라도 항상 동일한 암호문 생성

요청 예시

요청 예시는 다음과 같습니다.

  • plaintext를 String 타입으로 요청
curl --location --request POST 'https://ocapi.ncloud.com/kms/v1/keys/a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6/encrypt' \
--header 'x-ncp-apigw-timestamp: {Timestamp}' \
--header 'x-ncp-iam-access-key: {Access Key}' \
--header 'x-ncp-apigw-signature-v2: {API Gateway Signature}' \
--data '{
  "plaintext": "{BASE64_PLAINTEXT}",
  "context": "{BASE64_CONTEXT}"
}'
  • plaintext를 Array[String] 타입으로 요청
curl --location --request POST 'https://ocapi.ncloud.com/kms/v1/keys/a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6/encrypt' \
--header 'x-ncp-apigw-timestamp: {Timestamp}' \
--header 'x-ncp-iam-access-key: {Access Key}' \
--header 'x-ncp-apigw-signature-v2: {API Gateway Signature}' \
--data '{
  "plaintext": ["{BASE64_PLAINTEXT_1}", "{BASE64_PLAINTEXT_2}", "{BASE64_PLAINTEXT_3}"],
  "context": "{BASE64_CONTEXT}"
}'

응답

응답 형식을 설명합니다.

응답 바디

응답 바디에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
code String - 성공 여부
data Object - 응답 결과
data.ciphertext String 또는 Array[String] - 평문을 암호화하여 생성된 문자열 데이터

응답 상태 코드

Key Management Service API에서 공통으로 사용하는 응답 상태 코드에 대한 정보는 Key Management Service 응답 상태 코드를 참조해 주십시오.

응답 예시

응답 예시는 다음과 같습니다.

  • plaintext를 String 타입으로 요청
{
    "code": "SUCCESS",
    "data": {
        "ciphertext": "{CIPHERTEXT}"
    }
}
  • plaintext를 Array[String] 타입으로 요청
{
    "code": "SUCCESS",
    "data": {
        "ciphertext": [
            "{CIPHERTEXT_1}",
            "{CIPHERTEXT_2}",
            "{CIPHERTEXT_3}"
        ]
    }
}

RSA2048 공개 키로 직접 암호화하는 경우

RSA2048 키의 암호화 알고리즘 파라미터는 다음과 같습니다.

항목 값
알고리즘 RSAES-OAEP
OAEP 해시 SHA-256
MGF MGF1 with SHA-256
Label 없음
평문 최대 크기 190 bytes

Java의 파라미터 정의 예시는 다음과 같습니다.

OAEPParameterSpec spec = new OAEPParameterSpec(
        "SHA-256", "MGF1", MGF1ParameterSpec.SHA256, PSource.PSpecified.DEFAULT);
참고

NCP KMS는 국내 암호 권고 기준에 따라 OAEP-SHA1을 지원하지 않고 위 스펙 단일 방식으로만 동작하므로, 암호화·복호화 요청 시 별도의 알고리즘 파라미터를 지정할 필요가 없습니다. KMS API를 호출하지 않고 공개 키로 직접 암호화한 데이터도 위 조건과 동일하게 암호화했다면 Decrypt로 복호화할 수 있습니다. 공개 키 조회와 암호화 예시는 Get Public Key를 참조해 주십시오.