电子说
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 出现在消息中。
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !