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 出現在消息中。
審核編輯:劉清
-
編碼
+關注
關注
6文章
943瀏覽量
54838 -
CeR
+關注
關注
0文章
4瀏覽量
7274
原文標題:OSS Nokalva:ASN.1問答時間(5)
文章出處:【微信號:哲想軟件,微信公眾號:哲想軟件】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論