【发布时间】:2015-10-05 04:17:03
【问题描述】:
我正在实现一个 ASN1 解析器来解码 x509 证书。您可以使用序列和设置标签。我看不出为什么这两个不应该是同一件事的原因。
各有什么区别,合适的使用时间?
【问题讨论】:
标签: certificate rsa x509 asn.1
我正在实现一个 ASN1 解析器来解码 x509 证书。您可以使用序列和设置标签。我看不出为什么这两个不应该是同一件事的原因。
各有什么区别,合适的使用时间?
【问题讨论】:
标签: certificate rsa x509 asn.1
一个序列是有序的,一个集合不是。
什么时候合适?一个例子可能是在对大量数据进行编码时,将它们以正确的顺序带到发送方会比强制它们以任何顺序被接受需要更多的工作。
【讨论】:
作为@ChristophSommer 回答的附录
一个序列是有序的,一个集合不是。
... 这会有所不同,例如编码某些对象时。使用 DER(区分编码规则)需要集合元素的区分顺序,而序列元素保持其原始顺序。
适当的使用时间
正如 Christoph 的回答所表明的那样,您对与序列中出现的顺序相关的条目使用序列,并为与顺序无关的条目使用集合。
此外,通常假定集合中的条目是唯一的,一个集合中没有两个相同的条目,而一个序列可能包含许多相同的条目。
【讨论】:
distinguished order of set elements -- 如何 它们是如何排序的/这个排序是什么?这可能是一个线索或线索,可以有效地推动,因为任何明确的排序顺序都会有围绕相同项目的极端情况,即使没有在规范中讨论,至少会产生有趣的结果来检查实现由于计算机代码的不屈不挠的性质。
a a b 和 a a b 之间没有区别,所以排序确实会自行排序......但我想一个人真的“应该”留意为此,除非经过测试,否则在编码期间不要依赖库的重复数据删除功能。