gpt4 book ai didi

c++ - 如何简单地创建一个 ASN.1 DER 编码的 blob

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:00:07 24 4
gpt4 key购买 nike

问候,

我怎样才能简单地将一些二进制数据编码为 ASN.1 DER 编码的 blob?我正在使用 C/C++,我认为应该可以简单地在二进制 blob 前加上一些适当的字节作为前缀,这些字节表示数据是八位字节字符串类型并且具有给定的长度(并且在长度为 1 I 的序列中猜测)。

背景,如果你感兴趣的话:

为什么我要这样滥用ASN.1?对于一个研究项目,我需要将一些数据嵌入到具有关联 X.509 证书的数字签名中。 (如果重要的话,我在 Peter Gutmann 的 cryptlib 库中使用 createSignatureEx 来创建符合 CMS/S/MIME-2/3/PKCS-#7 的签名。我没有签署要编码的数据,只是将其添加为元数据到签名以丰富它。)根据我的理解,具有任意扩展数据的严重签名需要使用 ASN.1 DER 对扩展数据进行编码。我的数据是一个二进制 blob,仅对我的应用程序有用,因此对我的数据的每个部分进行正确的 ASN.1 编码没有实际值(value)。我想通过一些工作我可以学会使用 asn1c 来做到这一点,但它看起来很复杂而且我在截止日期前。同样重要的是,这似乎是不必要的,而且这些信息似乎对其他想要避免正确 ASN.1 编码痛苦的开发人员有用。

谢谢!

最佳答案

我会使用 ASN.1 Compiler .

人们滥用 ASN.1 是因为它是一种编码数据结构的方法。任何时候你有一个 C/C++ 程序使用攻击者控制问题的数据结构;缓冲区溢出和整数溢出,发挥作用。 ASN.1 并不比 XML 或 JSON 或 bencode 更不安全,因为这些都是可能的故障点。编码库本身可能存在问题,例如 nasty Microsoft vulnerability.但无论您使用何种编码方法,此声明都是正确的。 ASN.1 是一个很好的选择,因为生成的消息非常小,而且它是我所知道的任何编码方法中最有效利用空间的方法。

关于c++ - 如何简单地创建一个 ASN.1 DER 编码的 blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3637545/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com