![](/img/trans.png)
[英]ASN.1 BER Encode Integer 0x10000000FFFFFFFC Indefinite Length Encoded
[英]How do you escape double null octets within an octet string encoded with indefinite length in BER?
我正在尝试用D编写基本编码规则编解码器,并且希望能够使用不确定的长度编码对数据进行编码,其中长度字节设置为0x80
,值字节的末尾用双null分隔0x00 0x00
(内容结尾)。 但是,有时双精度null是要编码的实际值的一部分。 例如,如果您有OCTET STRING
,则两个相邻的字节可能是0x00 0x00
,这将被解释为END OF CONTENT
而不仅仅是编码值的一部分,从而导致编码值被截断(最佳情况) )。 有没有某种方法可以将双null编码而不将其解释为END OF CONTENT
? 还是只希望对没有双null的值进行编码? 我尚未在任何规范中找到关于此的任何信息。
永远不要将普通OCTET STRING内容放在0x80和0x00 0x00之间。 相反,您将[可能是]固定长度编码的OCTET STRING放在了那里。
换句话说,无限长度编码的单字节块“ AB” ASCII字符串(例如,十六进制的0x41 0x42)将如下所示:
0x24 0x80 0x04 0x01 0x41 0x04 0x1 0x42 0x00 0x00
^ ^ ^ ^
outer header inner chunk #1 inner chunk #2 outer EOO sentinel
最终结果是,解码器不必扫描实际的有效载荷搜索EOO标记,因为有效载荷裕量由确定长度的编码段明确定义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.