18、GeneralString、GraphicString等與 ASN.1中其他廣泛使用的字符串類型有何不同?
GeneralString、GraphicString、TeletexString和 VideotexString都具有在指定字符時允許轉(zhuǎn)義序列的特性。因此,這些類型之一中的字符可能占用一個八位字節(jié),或兩個,或三個......,并且每個字符的八位字節(jié)數(shù)對于給定的字符串值不一定是固定的,它可以變化。將此與IA5String、PrintableString、VisibleString、NumericString、BMPString和 UniversalString進(jìn)行對比,它們都具有每個字符的固定位數(shù),因此被稱為已知乘數(shù)字符串類型或固定寬度字符串類型。GeneralString 等是可變寬度字符串類型。
19、ASN.1中的DEFAULT {} 是什么意思?
DEFAULT通常意味著在語義上無法區(qū)分該值是否已編碼。一般來說,這意味著如果它是默認(rèn)值,您可以選擇省略該值,盡管一些編碼規(guī)則(例如,DER)要求如果該值是默認(rèn)值,則永遠(yuǎn)不會被編碼。
DEFAULT{} 僅對具有命名位列表、SETOF 和SEQUENCE OF 的BIT STRING 有效。在 BIT STRING的情況下,它表示默認(rèn)值為空字符串(長度為0),而在SET OF 和SEQUENCE OF 的情況下,它表示出現(xiàn)0 次的值。
20、什么是規(guī)范編碼規(guī)則(CER)?
它與BER 類似,因為所有有效的CER 編碼都是有效的BER 編碼。BER 允許以多種方式對大多數(shù)值進(jìn)行編碼,而CER 規(guī)定對于給定值僅允許使用其中一種方式(例如,BER表示對于BOOLEAN,值00 為FALSE,任何非零值均為TRUE,而CER 表示00 為FALSE,F(xiàn)F為TRUE,值01-FE 為false)。它在大多數(shù)方面類似于 DER,因為DER 還規(guī)定了一種編碼任何給定值的方法。它們最大的不同之處在于:
1.DER 使用定長編碼,而CER 使用不定長編碼。
2.DER 要求字符串類型以原始形式編碼,而CER 要求字符串類型在長度小于1000 個八位字節(jié)時以原始形式編碼,并且以具有1000 個字節(jié)段的構(gòu)造形式(可能除了最后一句)如果它們的長度超過 1000個字節(jié)。
在 DER中,SET的組件必須在運行時進(jìn)行排序。在 CER 中,使用與PER 中相同的算法,基于標(biāo)簽對SET 的組件進(jìn)行預(yù)排序。
21、OPTIONAL元素在擴(kuò)展添加中的意義是什么?
考慮類型:
MySeq ::= SEQUENCE {
i INTEGER,
...,
e1 BOOLEAN,
e2 INTEGER (0..65535) OPTIONAL
}
擴(kuò)展添加項對于未定義這些項的實現(xiàn)版本都是“可選的”(例如,在MySeq 的版本1 中,未定義e1 和e2),但在定義了擴(kuò)展添加的實現(xiàn)版本中(例如,假設(shè) e1 和e2 在版本2 中定義)未標(biāo)記為OPTIONAL的擴(kuò)展添加項對于該版本是強(qiáng)制性的,而那些標(biāo)記為OPTIONAL 的項對于該版本是可選的。
因此,如果上面的 e1 和e2 在版本2 中定義但不是在版本1 中定義,則版本2 實現(xiàn)需要始終傳輸e1,如果它是發(fā)起消息的,因為它沒有標(biāo)記為OPTIONAL,但可以省略e2。如果它不是發(fā)起消息(例如,它正在轉(zhuǎn)發(fā)從版本 1實現(xiàn)接收到的消息),那么如果e1 和e2 不存在于消息中,則可以隨意省略它們。這意味著如果 e1不存在,您將永遠(yuǎn)無法使e2 出現(xiàn)在消息中。
審核編輯:劉清
-
編碼
+關(guān)注
關(guān)注
6文章
933瀏覽量
54731 -
CeR
+關(guān)注
關(guān)注
0文章
4瀏覽量
7262
原文標(biāo)題:OSS Nokalva:ASN.1問答時間(5)
文章出處:【微信號:哲想軟件,微信公眾號:哲想軟件】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論