11

SEQUENCE (OF) ASN.1 データ型のタグ値に関する多くの矛盾する情報を見つけています。

ウィキペディアは、それが 0x10 と 0x30 の両方であると主張しています。

http://en.wikipedia.org/wiki/Abstract_Syntax_Notation_One -> 0x30

http://en.wikipedia.org/wiki/Basic_Encoding_Rules -> 0x10

Microsoft によると、0x30 です。

http://msdn.microsoft.com/en-us/library/windows/desktop/bb540799%28v=VS.85%29.aspx

また、Bouncycastle のソースには次のものがあります。

public const int Sequence = 0x10;

したがって、基本的には 0x10 と 0x30 の間のタイです。本当の価値があることを知っていますか、それとも私は何かを見逃していますか?

4

1 に答える 1

18

BER でエンコードされた「タグ」は、いくつかのビット フィールドで構成されています。

----------------------------------
| | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
----------------------------------
|クラス |P/C| タグ番号 |
----------------------------------
  • シーケンス (ユニバーサル クラス) のタグ番号は 0x10 です。
  • シーケンスは構築型で、P/C ビットを 1 にします。
  • ユニバーサル クラスは 0 です
  • これにより、オクテット全体が 0x30 になります。

BER/DER/CER でシーケンスをエンコードするには多くの方法があることに注意してください。使用される正確な ASN.1 によって異なります。たとえば、一部のプロトコルはクラスをオーバーライドし、アプリケーション固有のクラスとしてシーケンスを指定する場合があります。また、暗黙のタグ付けが使用されている場合は、独自のタグ番号を指定する場合もあります。

ここでBERエンコーディング仕様を読むことができます

于 2011-10-15T13:52:46.727 に答える