Freigeben über


INTEGER (Zertifikatregistrierungs-API)

Ganze Zahlenwerte werden in ein TLV-Triplet codiert, das mit einem Tag-Wert von 0x02 beginnt. Das Feld "Wert " des TLV-Triplets enthält die codierte ganze Zahl, wenn sie positiv ist, oder die Ergänzung der beiden, wenn sie negativ ist. Wenn die ganze Zahl positiv ist, aber das Bit mit hoher Reihenfolge auf 1 festgelegt ist, wird dem Inhalt ein führendes 0x00 hinzugefügt, um anzugeben, dass die Zahl nicht negativ ist. Das Byte mit hoher Reihenfolge von 0x8F (10001111) ist beispielsweise 1. Daher wird dem Inhalt, wie in der folgenden Abbildung dargestellt, ein führendes Null-Byte hinzugefügt.

der encoding of boolean data type

Wenn die ganze Zahl weniger als 128 Bytes enthält, erfordert das Feld "Länge " nur ein Byte, um die Inhaltslänge anzugeben. Wenn die ganze Zahl mehr als 127 Bytes beträgt, wird Bit 7 des Felds Länge auf 1 und Bits 6 bis 0 festgelegt, um die Anzahl zusätzlicher Bytes anzugeben, die zum Identifizieren der Inhaltslänge verwendet werden. Weitere Informationen finden Sie unter "Codierte Länge" und "Wert bytes".

Im folgenden Beispiel von PKCS #10 Codiert ASN.1 wird die Codierung für einen öffentlichen 128-Byteschlüssel angezeigt. Das erste Byte enthält den Tag-Wert für den DATENTYP INTEGER , 0x02. Die zweite und dritte Bytes enthalten den Längenwert . Bit 7 des zweiten Bytes ist auf 1 festgelegt, da mehr als 127 Bytes Inhalt vorhanden sind. Bits 0 bis 6 des zweiten Byte geben die Anzahl der nachgestellten Bytes an, die in diesem Fall erforderlich sind, um die Inhaltslänge genau anzugeben. Das dritte Byte gibt die Anzahl der Inhaltsbytes an, 0x81. Das vierte Byte, 0x00, wird dem Inhalt hinzugefügt, um anzugeben, dass die ganze Zahl tatsächlich ein positiver Wert ist, auch wenn das Zeichen bit des führenden Inhaltsbytes (0x8F) auf 1 festgelegt ist.

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

Das folgende Beispiel zeigt, wie der ganzzahlige Wert 0x03 codiert wird. Das Tag-Byte enthält 0x02, und das Length-Byte gibt an, dass ein Byte inhalt vorhanden ist.

02 01             ; INTEGER (1 Bytes)
|  03

ASN.1 Typsystem

DER-Codierung von ASN.1-Typen