--- title: "Encrypt" slug: "security-kms2-encrypt" updated: 2026-09-17T09:16:56Z published: 2026-09-17T09:16:56Z canonical: "api.ncloud-docs.com/security-kms2-encrypt" --- > ## Documentation Index > Fetch the complete documentation index at: https://api.ncloud-docs.com/llms.txt > Use this file to discover all available pages before exploring further. # Encrypt Classic/VPC 환경에서 이용 가능합니다. 키의 현재 버전으로 최대 32 KB 크기의 데이터를 암호화합니다. AES256 또는 RSA2048 키 타입으로만 요청할 수 있습니다. ## 요청 요청 형식을 설명합니다. 요청 형식은 다음과 같습니다. | 메서드 | URI | | --- | --- | | POST | /kms/v1/keys/{keyTag}/encrypt | ### 요청 헤더 Key Management Service API에서 공통으로 사용하는 헤더에 대한 정보는 [Key Management Service 요청 헤더](/docs/security-kms#%EC%9A%94%EC%B2%AD%ED%97%A4%EB%8D%942%EA%B3%84%EC%A0%95%EC%9D%B8%EC%A6%9D)에서 계정 인증 방식을 참조해 주십시오. ### 요청 경로 파라미터 요청 경로 파라미터에 대한 설명은 다음과 같습니다. | 필드 | 타입 | 필수 여부 | 설명 | | --- | --- | --- | --- | | `keyTag` | String | Required | 키 태그 - 키 이름에서 파생된 키의 고유 식별자 - [Get Key List](/docs/security-kms2-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 응답 상태 코드](/docs/security-kms#%EC%9D%91%EB%8B%B5%EC%83%81%ED%83%9C%EC%BD%94%EB%93%9C2)를 참조해 주십시오. ### 응답 예시 응답 예시는 다음과 같습니다. - `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](/docs/security-kms2-decrypt#%EA%B3%B5%EA%B0%9C%ED%82%A4%EC%95%94%ED%98%B8%ED%99%94%EB%B3%B5%ED%98%B8%ED%99%94)로 복호화할 수 있습니다. 공개 키 조회와 암호화 예시는 [Get Public Key](/docs/security-kms2-token-public-key#%EA%B3%B5%EA%B0%9C%ED%82%A4%EB%A1%9C%EC%95%94%ED%98%B8%ED%99%94)를 참조해 주십시오.