是否有一个好的C ++库来读取,创建和修改BER编码文件?
有几种工具可以自动生成用于读写BER编码文件的C ++(或其他)代码。 在我的C ++项目中,我需要库来读取和修改BER编码文件。 我无法根据给定的数据结构生成C ++类,因为没有给定的数据结构。 用户应该能够添加和删除整数,字符串等。我找到了一个具有这种功能的编辑器的开源项目:http://www.codeproject.com/Articles/4910/ASN-1-Editor
但是,这是在C#中....
请让我知道,如果你知道如何使用我可以用于我的C ++项目的这个功能获得一个好的C ++库。
确保你有一个正确的ASN定义文件。 然后去链接http://lionet.info/asn1c/asn1c.cgi
将ASN定义粘贴到给定的窗口中。 按下“继续使用ASN.1编译”按钮。 如果你得到任何编译错误纠正这些。 编译成功后,它将生成解码器的代码。 试一试它的好处。
没有大量的通用BER读取库,因为在没有至少一些模式知识的情况下,不可能明确地解析任意BER数据。
您在CodeProject指向的工具编辑ASN.1模式,用于创建BER编码,但如果不知道数据或猜测,则无法进入其他方向。 无法通过查看BER元素的ID和长度来判断该元素是否包含原始数据或其他BER元素。
这是我想出的最小的例子,仅仅是5个字节,用两种截然不同的解释来解释:
0xA0 0x03 0x02 0x01 0x00
现在,这显然是一种构建的,特定于上下文的类型。 它也有一定的长度。 但它里面有什么? 你不能说!
它可能是一个整数(0x02是整型的基本标签,0x01是len,值为0x00)。
但它也可能是一个比特串(你可以将一个比特串放入一个构造的类型中,然后2是末尾未使用的比特数,这意味着我们有14个比特,它出来0000 0001 0000 00xxb = 00 0000 0100 0000b = 0x0040。
您可以编写一个编辑器来读取/修改/写入BER文件,但必须知道该模式,否则将无法正确读取任何内容。
链接地址: http://www.djcxy.com/p/68399.html上一篇: Is there a good C++ library to read, create and modify BER encoded files?