ASN1抽象语法符号介绍

ASN1(Abstract Syntax Notation One)简介   

ASN1(Abstract Syntax Notation One),抽象语法符号)是用来描述数据结构及其编码的规则集,它广泛用于RFCRequest For Comments)文本中的数据结构的描述。X.509证书结构(RFC 2459)就是采用ASN1描述和编码的。因此首先对ASN1的编码规则做一简介。   在ASN1编码中,数据类型包括简单类型和结构类型。简单类型是不能再分解类型,如整型(INTERGER)、比特串(BIT STRING)、字节串(OCTET STRING)、对象标示符(OBJECT IDENTIFIER)、日期型(UTCTime)等。结构类型是由简单类型和结构类型组合而成的,如顺序类型(SEQUENCE, SEQUENCE OF)、选择类型(CHOICE)、集合类型(SET)等。顺序类型的值由按给定顺序成员数据值组成;选择类型的值由多个成员数据类型中的某一个值构成;集合数据类型由成员数据类型的一个或多个值构成。每一种类型都有一个整数标记(TAG)来标识该类型。常用类型的TAG值如下:

Table 1.1: Tags of class UNIVERSAL

标记(TAG)  对应类型

[UNIVERSAL 1] BOOLEAN

[UNIVERSAL 2] INTEGER

[UNIVERSAL 3] BIT STRING

[UNIVERSAL 4] OCTET STRING

[UNIVERSAL 5] NULL

[UNIVERSAL 6] OBJECT IDENTIFIER

[UNIVERSAL 8] EXTERNAL, INSTANCE OF

[UNIVERSAL 12] UTF8String

[UNIVERSAL 13] RELATIVE-OID

[UNIVERSAL 16] SEQUENCE, SEQUENCE OF

[UNIVERSAL 17] SET, SET OF

[UNIVERSAL 18] NumericString

[UNIVERSAL 19] PrintableString

[UNIVERSAL 20] TeletexString, T61String

[UNIVERSAL 21] VideotexString

[UNIVERSAL 22] IA5String

[UNIVERSAL 23] UTCTime

[UNIVERSAL 24] GeneralizedTime

[UNIVERSAL 25] GraphicString

[UNIVERSAL 26] VisibleString, ISO646String

[UNIVERSAL 27] GeneralString

[UNIVERSAL 28] UniversalString

[UNIVERSAL 29] CHARACTER STRING

[UNIVERSAL 30] BMPString

[UNIVERSAL 31]... reserved for future use

 

  

不论是简单类型还是结构类型的值其编码都是由四个部分构成:类型标识字段,用来标识该值的类型;长度字段,用来标识该值所占的字节数;值字段;结束标示字段。   在类型标识字段中,使用类型的TAG来标识该类型,在证书中使用一个字节来表示。Bit8-bit7 用来标示 TAG 类型,bit6 标示是否为结构类型(1 位结构类型),bit5-bit1是类型的TAG值。如 SEQUENCE 类型,其TAG类型位UNIVERSAL(00),属于结构类型(1),TAG值为1610000 所以其类型标示字段值为(00110000),即为0x30 长度字段,有两种编码格式。若长度值小于等于127,则用一个字节表示,bit8 = 0, bit7-bit1 存放长度值;若长度值大于127,则用多个字节表示,第一个字节存放长度字段所占的字节数(<=127,并且bit8 = 1,其余字节存放长度值。如果长度值不定用一个字节(0x80)表示。   值字段,存放数据值,具体编码随值的数据类型不同而不同。   结束标示字段,两个字节(0x0000,只有在长度值为不定时才会出现。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值