다음을 통해 공유


INTEGER(인증서 등록 API)

정수 값은 0x02 태그 값으로 시작하는 TLV 트리플렛으로 인코딩됩니다. TLV 트리플렛의 필드에는 양수인 경우 인코딩된 정수 또는 음수인 경우 두 개의 보수가 포함됩니다. 정수가 양수이지만 상위 비트가 1로 설정된 경우 선행 0x00 콘텐츠에 추가되어 숫자가 음수가 아님을 나타냅니다. 예를 들어 0x8F(10001111)의 높은 순서 바이트는 1입니다. 따라서 다음 그림과 같이 선행 0 바이트가 콘텐츠에 추가됩니다.

부울 데이터 형식der 인코딩

정수에 128바이트 미만이 포함된 경우 길이 필드에는 콘텐츠 길이를 지정하는 데 1바이트만 필요합니다. 정수가 127바이트를 초과하는 경우 길이 필드의 비트 7이 1로 설정되고 6~0비트는 콘텐츠 길이를 식별하는 데 사용되는 추가 바이트 수를 지정합니다. 자세한 내용은 인코딩된 길이 및 값 바이트참조하세요.

다음 예제에서는 PKCS #10 인코딩된 ASN.1128 바이트 공개 키에 대한 인코딩을 보여 줍니다. 첫 번째 바이트에는 INTEGER 데이터 형식에 대한 태그 값이 0x02. 두 번째 및 세 번째 바이트에는 Length 값이 포함됩니다. 127바이트 이상의 콘텐츠가 있기 때문에 두 번째 바이트의 비트 7은 1로 설정됩니다. 두 번째 바이트의 비트 0~6은 콘텐츠 길이를 정확하게 지정하기 위해 필요한 후행 바이트 수를 지정합니다. 세 번째 바이트는 0x81 콘텐츠 바이트 수를 지정합니다. 네 번째 바이트(0x00)는 선행 콘텐츠 바이트(0x8F)의 부호 비트가 1로 설정되어 있더라도 정수가 실제로 양수 값임을 나타내기 위해 콘텐츠에 추가됩니다.

02 81 81          ; INTEGER (81 Bytes)
|  00
|  8f e2 41 2a 08 e8 51 a8  8c b3 e8 53 e7 d5 49 50
|  b3 27 8a 2b cb ea b5 42  73 ea 02 57 cc 65 33 ee
|  88 20 61 a1 17 56 c1 24  18 e3 a8 08 d3 be d9 31
|  f3 37 0b 94 b8 cc 43 08  0b 70 24 f7 9c b1 8d 5d
|  d6 6d 82 d0 54 09 84 f8  9f 97 01 75 05 9c 89 d4
|  d5 c9 1e c9 13 d7 2a 6b  30 91 19 d6 d4 42 e0 c4
|  9d 7c 92 71 e1 b2 2f 5c  8d ee f0 f1 17 1e d2 5f
|  31 5b b1 9c bc 20 55 bf  3a 37 42 45 75 dc 90 65

다음 예제에서는 정수 값 0x03 인코딩하는 방법을 보여 있습니다. 태그 바이트에는 0x02 포함되며 Length 바이트는 1 바이트의 콘텐츠가 있음을 지정합니다.

02 01             ; INTEGER (1 Bytes)
|  03

ASN.1 형식 시스템

ASN.1 형식 DER 인코딩