ASN.1概述

ASN.1是一种标准的计算机对象描述规则,用于互联网上的数据传输,具有平台和实现中立性。它定义了包括简单类型、结构类型在内的多种数据类型,并使用修饰词如OPTIONAL和DEFAULT来灵活配置数据结构。asn.1的语法包含类型定义、值定义和模块定义,通过这些定义,可以创建复杂的数据结构,如SEQUENCE、CHOICE和SET。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ASN.1的作用: 

传送语法:互联网上数据传输时的表现形式,通常以8位位组的流表示

中立:作为标准的计算机对象描述规则,平台无关,实现无关

抽象:以字节为基本单位,能够描述复杂的对象结构


ASN.1的类型:

简单类型:不能够再分解的类型。如整型(INTERGER),比特串(BIT STRING),字符串(OCTET STRING),对象标识符(OBJECT INDENTIFIER),日期型(UTCTime)等

结构类型: 包括顺序类型:按给定成员数据值组成

                          选择类型:由多个类型中的某一个组成

                          集合类型:由成员数据类型的一个或多个值组成


SEQUENCE:一个或多个类型的有序集合

SEQUENCE OF:0个或某个给定类型多次出现的有序集合

SET:一个或多个类型的无序集合

SET OF:0个或某个给定类型多次出现的无序集合


修饰词:

OPTIONAL:任选的,表示组件的值是可选的。

DEFAULT:缺少的,表示若未分配则指定默认值。

COMPONENTS OF:.....的组件


ASN.1的语法:

换行无特殊意义,多个空格或者多个空行代表一个空格

注释由一对连字符(--)开头

“ ”双引号代表字符本身

<>代表必选项

[]标签的开始和结束

{}清单的开始和结束

|  相当于或

::= 被定义为

() 子类型的开始和结束


类型定义:

<新类型的名字>::=<类型描述>

注意:新类型的名字需要大写字母开头,类型描述是内建类型或者在其它地方定义的类型

例子1:

Married::=BOOLEAN

例子2:

From::=SEQUENCE

{

    name PrintableString,

    age Age,

    married Married,

    marriage-certificate Picture OPTIONAL

}

例子3:

Payment-method::=CHOICE

{

    check Check_number,

    credit_card SEQUENCE

    {

        number Card_number,

        expiry_date Date

    }

}


值定义:

<新值的名字><该值的类型>::=<值描述>

注意:新值的名字由小写字母开头,值描述是基于整数或者字符串或者标识符等等的组合。且如果两个类型一样,可以相互赋值

例子1:

counter Lottery_number::=45

例子2:

pair Coordinaters::={x+5,y-3}

例子3:

date Date::="20000824"

例子4:

son_choice Afters::=dessert:"profiterolles"



模块定义:

<模块名字>DEFINITIONS<缺省Tag>::=

BEGIN

EXPORTS<名字>;                                                    --在本模块之外可以被访问到的类型或值

IMPORTS<名字>,valueFROM<其它模块的OID>;    --在其它模块定义,在本模块会用到的类型或值

<模块具体描述>

END

例子1:

DEFINITIONS AUTOMATICTAGS ::=

BEGIN

EXPORTS Type2;

IMPORTS Type1, valueFROM Module1 {iso member-body(2)

f(250) type-org(1)ft(16) asn1-book(9) chapter5(0) module1(0)};

Type2 ::= SEQUENCE OFChoice

Choice ::= CHOICE

{

a INTEGER (0..value),

b Type1

}

 END


完!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值