python默认编码类型_如何使用pyasn1对ASN.1对象使用默认类型进行编码?

我试图使用pyasn1对RSA签名进行编码,但是我在SEQUENCE中的默认类型有问题。我定义了两种AlgorithmIdentifier类型,一种是默认的“algorithm”组件,另一种是在新创建的对象上手动设置的。如果我实例化每个对象中的一个,然后调用prettyPrint(),那么输出看起来是相同的。但是,如果我编码错误(或者按顺序编码),默认类型的对象似乎缺少算法组件。在

例如:from pyasn1.type import univ, namedval, namedtype, tag

from pyasn1.codec.ber import encoder

pkcs1 = univ.ObjectIdentifier('1.2.840.113549.1.1')

md5WithRSAEncryption_id = pkcs1 + univ.ObjectIdentifier((4,))

class AlgorithmIdentifier(univ.Sequence):

componentType = namedtype.NamedTypes(

namedtype.NamedType('algorithm', univ.ObjectIdentifier()),

namedtype.OptionalNamedType('params', univ.Any()))

class AlgorithmIdentifier2(univ.Sequence):

componentType = namedtype.NamedTypes(

namedtype.DefaultedNamedType('algorithm', md5WithRSAEncryption_id),

namedtype.OptionalNamedType('params', univ.Any()))

a = AlgorithmIdentifier()

a.setComponentByName('algorithm', md5WithRSAEncryption_id)

print a.prettyPrint()

print "Encoded: %s" % encoder.encode(a).encode('hex')

a2 = AlgorithmIdentifier2()

a2.setDefaultComponents()

print a2.prettyPrint()

print "Encoded: %s" % encoder.encode(a2).encode('hex')

输出:

^{pr2}$

我做错什么了?在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值