- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
asn.1的ber编码ASN.1即抽象语法符号,用来定义应用程序数据和表示[wiki]协议[/wiki]数据单元的抽象语言。优点是独立于机器、语言及应用程序的内部表示。适用于描述现代通信中复杂的、变化的、可扩展的数据结构。比如[wiki]3G[/wiki]和Vo[wiki]IP[/wiki]均采用了 ASN.1。ASN.1分两大部分:语法规则和编码规则。语法规则1. ASN.1定义示例Age ::= INTEGER (0..120)User ::= SEQUENCE { name IA5String (SIZE(1..128)),ageAge DEFAULT 18, address IA5String OPTIONAL, ... }2. 简单类型基本类型字符串类型对象类型其它类型3. 构造类型SEQUENCE,对应于C语言中的structSEQUENCE OF,对应于数组SET,类似于SEQUENCE,但不考虑分量顺序SET OF,集合类型,每一分量类型相同,不考虑顺序4. 类型定义语法:typereference ::= Type示例:1) Counter ::= INTEGER 2) UserAccount ::= SEQUENCE {usernamePrintableString,passwordPrintableString,account INTEGER} 5. 赋值语法:valuereference Type ::= Value示例:1) current Counter ::= 1234 2) myAccountUserAccount ::= {username “tly”, password “guesswhat”,account 2345}编码规则1. BER 1) 三种情况及其格式:a.简单类型(Primitive),定长;Identifier | Length | Content b.构造类型(Constructed),定长;Identifier | Length | I | L | C | I | L | C | ...c.构造类型(Constructed),不定长;Identifier | Length | I | L | C | I | L | C | EOC|2) Identifier编码格式: 8 7 6 5 4 3 2 1 Class | P/C | Tag number分两种情况:a.Tag number 31 b.Tag number = 313) Length及Content编码分三种情况:a.短形(L 128),定长b.长形(L = 128),定长c.不定长,仅用于构造类型4) 示例a.INTEGER 49 0000 0010 0000 0001 0011 0001b.UserAccount ::= SEQUENCE {username IA5String,account INTEGER} myAccountUserAccount ::= {username “john”,account 129} 0011 0000 00000110 00001010 01101000 01100010 00000000 1000 0001 2. DER 为确保编码的唯一性,出现了CER和DER两种编码方案,它们均为BER子集。其中DER只使用定长编码,CER基于不定长编码。3. PER 在PER中,tag从不传送,length和value如果双方都知道,也不需传送。因此,其编码更精简,效率更高。1) 格式preamble | length | contents preamble:只出现在ENUMERATED、SEQUENCE、SET、CHOICE四种数据结构的编码中。用来记录结构中有无扩展项(extension)、选择项(optional)或缺省项(default);length:对STRING、SEQUENCE OF、SET OF等数据类型进行编码时,需对其长度按对齐方式进行编码;contents:若数据是基本结构类型,如:BOOLEAN、INTERGER、REAL、BITSTRING等,即可直接进行编码;若数据是复合结构类型,如SEQUENCE、SET、CHOICE、SEQUENCE OF 等,则属嵌套编码,此时contents中也包含有preamble、length、contents三个
原创力文档


文档评论(0)