asn.1的ber编码

asn.1的ber编码

ID:42561902

大小:21.34 KB

页数:4页

时间:2019-09-17

asn.1的ber编码_第1页
asn.1的ber编码_第2页
asn.1的ber编码_第3页
asn.1的ber编码_第4页
资源描述:

《asn.1的ber编码》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、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{nameIA5String(SIZE(1..1

2、28)),ageAgeDEFAULT18,addressIA5StringOPTIONAL,...}2.简单类型基本类型字符串类型对象类型其它类型3.构造类型SEQUENCE,对应于C语言中的structSEQUENCEOF,对应于数组SET,类似于SEQUENCE,但不考虑分量顺序SETOF,集合类型,每一分量类型相同,不考虑顺序4.类型定义语法:typereference::=Type示例:1)Counter::=INTEGER2)UserAccount::=SEQUENCE{usernameP

3、rintableString,passwordPrintableString,accountINTEGER}5.赋值语法:valuereferenceType::=Value示例:1)currentCounter::=12342)myAccountUserAccount::={username“tly”,password“guesswhat”,account2345}编码规则1.BER1)三种情况及其格式:a.简单类型(Primitive),定长;Identifier

4、Length

5、Contentb

6、.构造类型(Constructed),定长;Identifier

7、Length

8、I

9、L

10、C

11、I

12、L

13、C

14、...c.构造类型(Constructed),不定长;Identifier

15、Length

16、I

17、L

18、C

19、I

20、L

21、C

22、EOC

23、2)Identifier编码格式:87654321Class

24、P/C

25、Tagnumber分两种情况:a.Tagnumber<31b.Tagnumber>=313)Length及Content编码分三种情况:a.短形(L<128),定长b.长形(L>=128),定长c.不定长,仅

26、用于构造类型4)示例a.INTEGER49000000100000000100110001b.UserAccount::=SEQUENCE{usernameIA5String,accountINTEGER}myAccountUserAccount::={username“john”,account129}0011000000001010000101100000001101001010011011110110100001101110000000100000001000000000100000012.D

27、ER为确保编码的唯一性,出现了CER和DER两种编码方案,它们均为BER子集。其中DER只使用定长编码,CER基于不定长编码。3.PER在PER中,tag从不传送,length和value如果双方都知道,也不需传送。因此,其编码更精简,效率更高。1)格式preamble

28、length

29、contentspreamble:只出现在ENUMERATED、SEQUENCE、SET、CHOICE四种数据结构的编码中。用来记录结构中有无扩展项(extension)、选择项(optional)或缺省项(defau

30、lt);length:对STRING、SEQUENCEOF、SETOF等数据类型进行编码时,需对其长度按对齐方式进行编码;contents:若数据是基本结构类型,如:BOOLEAN、INTERGER、REAL、BITSTRING等,即可直接进行编码;若数据是复合结构类型,如SEQUENCE、SET、CHOICE、SEQUENCEOF等,则属嵌套编码,此时contents中也包含有preamble、length、contents三个部分。2)示例a.cug-IndexINTEGER(1..256)的值

31、为10时,PER编码为(pad)00001001b.errorCHOICE{systemErrNULL,operationErrNULL,…}若error值为systemErr,则PER编码为00。4.XER即XMLEncodingRules,主要应用于网站开发,本文不作介绍。87654321+Length+Content--------------------------------------------------------------------------

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。