ASN.1 编码概述1(2)

2019-04-09 09:46

文档名称:ASN.1编码概述 5

<2>.默认(DEFAULT).默认修改器允许容器包含默认值.如果待编码的数据值等同于它的默认值,那么它将在发送的数据流中被忽略.例如:

Command ::= SEQUENCE {

Token IA5String(NOP) DEFAULT,

Parameter INTEGER

}

如果编码器把Token看成是代表字符串NOP,那么序列将按照定义的那样编码为:

Command ::= SEQUENCE {

Parameter INTEGER

}

<3>.选择(CHOICE). 选择修改器允许一个元素在给定的实例中可以有多个可能值.实质上说,解码器将尝试所有期望的解码算法,直到有一个类型符合为止.当一个复杂的容器中包含其他容器时,时候选择器就十分有用了.例如:

UserKey ::= SEQUENCE {

Name IA5String,

StartDate UTCTIME,

Expire UTCTIME,

KeyData CHOICE {

ECCKey ECCKeyType,

文档名称:ASN.1编码概述 6

RSAKey RSAKeyType

}

}

上例简单的允许ECC也允许RSA密钥的公钥证书.

3.ASN.1数据类型

ASN.1针对广泛的应用定义了多种数据类型,我们这里只讨论跟密码学应用相关的数据类型.我们将讨论如下数据类型:

布尔型 (Boolean);

八位位组串 (OCTET String);

位串 (BIT String);

IA5String;

可打印字符串 (PrintableString);

整数 (INTEGER);

对象标识符 (OBJECT Identifier, OID);

世界协调时 (UTCTIME);

空 (NULL);

序列,单一序列;

文档名称:ASN.1编码概述 7

集合;

单一集合;

任何ASN.1编码都是以两个字节开始(或者八位位组,含有8个二进制位),不管什么类型,它们都是通用的.第一个字节是类型标识符,也包含一些修正位;第二各字节是长度.

3.1 ASN.1头字节

头字节(hearder byte)位于ASN.1编码的开始,由3部分组成。如下图:

<1>. 类别位。

类别位(classification bits)由两位表示,用来描述数据将要解释的上下文。

位8 位7 类别 0 0 通用(Universal) 文档名称:ASN.1编码概述 8

0 1 应用(Application) 1 0 上下文特定(Context Specific) 1 1 专用(Private)

所有的类型中,通用类别最常用。

<2>. 结构化位。

结构化位(constructed bit)表示一个给定的编码是否是相同类型的多种编码的结构化。结构化元素是容器类型必需的,因为在逻辑上,它们只是其他元素的集合。

结构化元素有自己的头字节和长度字节,之后是元素各个要素组件的单独编码。也就是说,这些要素组件是独立地可解码ASN.1数据类型。

严格的说,容器类是唯一允许使用结构化位的数据类型。这是因为对于其他数据类型,给定内容,只允许一种编码。所以其他所有数据类型的结构化位都为0。

<3>. 原始类型。

ASN.1头字节的低5位定义了32种ASN.1的原始类型(primitive type)

代码 ASN.1类型 作用 文档名称:ASN.1编码概述 9

1 布尔型 储存布尔值 2 整数 储存大整数 3 位串 存储位数组 4 八位位串 存储字节数组 5 空 预留位(例如在选择修改器中) 6 对象标识符 标识算法及协议 16 序列和单一序列 未分类元素的容器 17 集合和单一集合 已分类元素的容器 19 可打印字符串 ASCII编码(忽略一些不可打印字符) 22 IA5String ASCII编码 23 世界协调时 以统一格式表示的时间


ASN.1 编码概述1(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:山东省东营市2016年中考物理试卷(解析版)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: