ASN.1中的DEFAULT {} 是什么意思

电子说

1.3w人已加入

描述

18、GeneralString、GraphicString等与 ASN.1中其他广泛使用的字符串类型有何不同?

GeneralString、GraphicString、TeletexString和 VideotexString都具有在指定字符时允许转义序列的特性。因此,这些类型之一中的字符可能占用一个八位字节,或两个,或三个......,并且每个字符的八位字节数对于给定的字符串值不一定是固定的,它可以变化。将此与IA5String、PrintableString、VisibleString、NumericString、BMPString和 UniversalString进行对比,它们都具有每个字符的固定位数,因此被称为已知乘数字符串类型或固定宽度字符串类型。GeneralString 等是可变宽度字符串类型。

19、ASN.1中的DEFAULT {} 是什么意思?

DEFAULT通常意味着在语义上无法区分该值是否已编码。一般来说,这意味着如果它是默认值,您可以选择省略该值,尽管一些编码规则(例如,DER)要求如果该值是默认值,则永远不会被编码。

DEFAULT{} 仅对具有命名位列表、SETOF 和SEQUENCE OF 的BIT STRING 有效。在 BIT STRING的情况下,它表示默认值为空字符串(长度为0),而在SET OF 和SEQUENCE OF 的情况下,它表示出现0 次的值。

20、什么是规范编码规则(CER)?

它与BER 类似,因为所有有效的CER 编码都是有效的BER 编码。BER 允许以多种方式对大多数值进行编码,而CER 规定对于给定值仅允许使用其中一种方式(例如,BER表示对于BOOLEAN,值00 为FALSE,任何非零值均为TRUE,而CER 表示00 为FALSE,FF为TRUE,值01-FE 为false)。它在大多数方面类似于 DER,因为DER 还规定了一种编码任何给定值的方法。它们最大的不同之处在于:

1.DER 使用定长编码,而CER 使用不定长编码。

2.DER 要求字符串类型以原始形式编码,而CER 要求字符串类型在长度小于1000 个八位字节时以原始形式编码,并且以具有1000 个字节段的构造形式(可能除了最后一句)如果它们的长度超过 1000个字节。

在 DER中,SET的组件必须在运行时进行排序。在 CER 中,使用与PER 中相同的算法,基于标签对SET 的组件进行预排序。

21、OPTIONAL元素在扩展添加中的意义是什么?

考虑类型:

MySeq ::= SEQUENCE {

i INTEGER,

...,

e1 BOOLEAN,

e2 INTEGER (0..65535) OPTIONAL

}

扩展添加项对于未定义这些项的实现版本都是“可选的”(例如,在MySeq 的版本1 中,未定义e1 和e2),但在定义了扩展添加的实现版本中(例如,假设 e1 和e2 在版本2 中定义)未标记为OPTIONAL的扩展添加项对于该版本是强制性的,而那些标记为OPTIONAL 的项对于该版本是可选的。

因此,如果上面的 e1 和e2 在版本2 中定义但不是在版本1 中定义,则版本2 实现需要始终传输e1,如果它是发起消息的,因为它没有标记为OPTIONAL,但可以省略e2。如果它不是发起消息(例如,它正在转发从版本 1实现接收到的消息),那么如果e1 和e2 不存在于消息中,则可以随意省略它们。这意味着如果 e1不存在,您将永远无法使e2 出现在消息中。



审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分