ASN.1基础 (更新).pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ASN.1基础 (更新)

  显然,应用标签和字节串标签都编码了,因此它是构造类型。为了减少编码中的冗余信息,可使用隐含标签,重新定义如下:   Password::=[APPLICATION 27] IMPLICIT OCTET STRING 则相应的编码为 5B 06 53 65 73 61 6D 65   从第一个字节看出它变为简单类型了,因为只有一种类型信息。 图4 个人记录的编码 下面是定义CHOICE类型的例子:   EthernetAdapterNumber::=CHOICE{NULL, OCTET STRING}   ANY类型表示任意类型的任意值,与CHOICE类型不同之处在于实际出现的类型也是未知的,通常记为    AnyType::=ANY | ANY DEFINED BY identifier   例如,我们可以定义    SoftwareVersion::=ANY    或SoftwareVersion::=ANY DEFINED BY INTEGER 子类型   子类型是由限制父类型的值集合而导出的类型,因此子类型的值集合是父类型的子集。子类型还可以再产生子类型。产生子类型的方法有6种,如表3所示。 表3 产生子类型的方法   1. 单个值   这种方法就是列出子类型可取的各个值。例如,我们可以定义小素数为整数类型的子集:   SmallPrime::=INTEGER(2|3|5|7|11|13|15|17|19|23|29)   另外,如果定义Months为枚举类型: Months::=ENUMERATED{january(1),february(2),march(3),april(4),may(5),    june(6),july(7),august(8),september(9),october(10), november(11),december(12)} 则可以定义First-quarter和Second-quarter为Months的子类型: First-quarter::=Months(january,february,march) Second-quarter::=Months(april,may,june)   2. 包含子类型   这里要用到关键字INCLUDES,说明被定义的类型包含了已有类型的所有的值。例如下面的定义:   First-half::=Months(INCLUDES First-quarter | I NCLUDES Second-quarter)   另外,也可以直接列出被包含的值,例如   First-third::=Months(INCLUDES First-quarter | april)   3. 值区间   这种方法只能应用于整数和实数类型,指出子类型可取值的区间。在下面的定义中PLUS-INFINITY和MINUS-INFINITY分别表示正、负最大值,MAX和MIN分别表示父类型可允许的最大值和最小值,区间可以是闭区间或开区间。如果是开区间,则加上符号“”。因此下面4个定义是等价的: PositiveInteger::=INTEGER(0..PLUS-INFINITY) PositiveInteger::=INTEGER(1..PLUS-INFINITY) PositiveInteger::=INTEGER(0..MAX)   PositiveInteger::=INTEGER(1..MAX) 同理,下面4个定义也是等价的: NegativeInteger::=INTEGER(MINUS-INFINITY..0) NegativeInteger::=INTEGER(MINUS-INFINITY..-1) NegativeInteger::=INTEGER(MIN..0)   NegativeInteger::=INTEGER(MIN..-1)   4. 可用字符   这种方法只能用于字符串类型,限制可使用的字符集。下面是两个限制可用字符的例子: TouchToneButtons::=IA5String(FROM(0|1|2|3|4| 5|6|8|9|*|#)) DigitString::=IA5String(FROM(0|1|2|3|4| 5|6|8|9))   5. 限制大小   可以对5种类型限制其规模大小,例如限制比特串、字节串或字符串的长度,限制构成序列或集合的元素(同类型)个数等。例如X.25(分组交换协议)公共数据网的地址由5~14个数字组成,这个规定可用下面的定义表示:   It1DataNumber::=DigitS

文档评论(0)

yaocen + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档