gpt4 book ai didi

python-2.7 - Pyasn1 decoder.decode 是如何工作的?

转载 作者:行者123 更新时间:2023-12-05 06:42:09 30 4
gpt4 key购买 nike

我有一小部分代码:

from pyasn1.type import univ
from pyasn1.codec.ber import decoder

decoder.decode(binary_file.read(5))

我的 binary_file 变量是一个特定的二进制文件编码 (CDR)

如果我尝试解码读取的部分,它会给我这个错误:

pyasn1.error.PyAsn1Error: [128:0:0]+[128:32:79] not in asn1Spec: None

我该如何解决?

最佳答案

除非您正在解码仅包含基本 ASN.1 类型(例如 INTEGER、SEQUENCE 等)的数据结构,否则您需要将顶级 ASN.1 数据结构对象传递给解码器。这样解码器就可以将自定义标签(BER/DER/CER 序列化中的 TLV 元组)与数据结构对象中存在的相同标签进行匹配。例如:

custom_int_type = Integer().subtype(implicitTag=Tag(tagClassContext, tagFormatSimple, 40))

custom_int_instance = custom_int_type.clone(12345)
serialization = encode(custom_int_instance)

# this will fail on unknown custom ASN.1 type tag
custom_int_instance, rest_of_serialization = decode(serialization)

# this will succeed as custom ASN.1 type (containing tag) is provided
custom_int_instance, rest_of_serialization = decode(serialization, asn1Spec=custom_int_type)

这里是 pyasn1 documentation on decoders 的链接.

要将 ASN.1 语法传递给 pyasn1 解码器,您必须首先将语法转换为对象的 pyasn1/Python 树。这是一次性操作,有时可以使用 asn1late 自动执行。工具。

我的另一个担心是您可能正在读取序列化数据的一小部分(5 个八位字节)。如果您的数据是使用“无限长度编码模式”序列化的,那么这可能是一个有效的操作,否则解码器可能会因输入不足而失败。

关于python-2.7 - Pyasn1 decoder.decode 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38307884/

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