我是ASN.1编码的新手,我想知道BER编码文件是否有标头或任何将其标识为BER编码文件的内容。我的意思是,如果有人给我一个文件,我可以告诉它是BER(或CER或DER)编码吗?
然后我可以拥有一个像这样运作的功能:
if FILE is BER-encoded
return "BER"
else if FILE is DER-encoded
return "DER"
else
return "It's something else"
但是我不确定BER编码是否以这种方式工作,或者在你知道它是否有BER之前你必须要用它来解码它。
答案 0 :(得分:1)
没有特殊的标头可以识别BER编码。但是,格式中存在大量冗余,因此如果您完全分析它们,就可以将许多字节序列识别为无效的BER。
每个DER编码也是有效的BER编码,但不一定相反。您可以将字节序列读取为BER,然后使用DER重新编码抽象值,并检查是否得到相同的结果。如果是,那最初是DER。
答案 1 :(得分:1)
正如@Henry所说,没有特殊标题。
但是,您可以通过尝试解码它们来了解您的文件是否包含BER编码数据。
转到http://asn1-playground.oss.com/,确保选中BER
,在Binary file
下拉列表(右上方框)中选择Data
并上传二进制文件。
如果您的文件包含有效的BER编码数据,它将显示在CONSOLE OUTPUT
但是,您可能会对结果感到失望:即使它有效,您也可能看不到任何有用的信息(您需要架构,即规范,才能理解数据)。