识别文件是否使用BER编码

时间:2018-05-11 17:05:58

标签: encoding asn.1

我是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之前你必须要用它来解码它。

2 个答案:

答案 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

但是,您可能会对结果感到失望:即使它有效,您也可能看不到任何有用的信息(您需要架构,即规范,才能理解数据)。