前段时间,工作上需要对asn1的数据进行解码,经过研究,使用了openssl进行了解码。这篇文章来记录下这个过程。
首先来简单介绍下openssl、asn1和der。openssl:在密码方面广泛使用,提供相应的命令行和链接库。
asn1:一种二进制的编码标准,即告诉我们要应该怎么组织数据,在电信和计算机网络方面被广泛使用(点我了解更详细)。
der:是asn1的一个实现方案,即依照asn1来实现了组织数据。
在实现之前,先来介绍如何生成der文件,有了源数据才能进行验证和测试。生成的方法是使用在openssl的命令中使用*asn1parse*根据配置文件来生成。详情如下:在命令行中打开openssl(即在命令行中输入"openssl"),linux应该自带有,windows下可以去官网下载后编译。我使用的版本是**1.1.e**。
创建配置文件test.conf,内容如下所示:
asn1 = SEQUENCE:seq_section
[seq_section]
field1 = BOOLEAN:TRUE
field2 = INTEGER:0x01
field3 = SEQUENCE:seq_child
[seq_child]
field1 = INTEGER:0x02
field2 = INTEGER:0x03文件的编写文档在此(Manual:ASN1 generate nconf(3)), 上面内容中定义了一个名字为seq_section的SEQUENCE,里面包含了BOOLEAN的元素field1,值为TRUE,同时也包含了seq_chi