0

我有一个公钥,但是,我不确定如何将它变成 Pycryptodome 上的密钥。我一直在使用我在这里找到的这段代码

keyDER = b64decode(key64)
seq = asn1.DerSequence()
seq.decode(keyDER)
keyPub = RSA.construct((seq[0], seq[1]))

print(keyPub.encrypt('test',"Unguessable"))

但是,使用 key64 作为公钥,我得到ValueError: Unexpected DER tag. 在 python 3.6 中使用 Pycryptodome 有更好的方法吗?

4

1 回答 1

0

我们需要这些模块:

import os
from Cryptodome.Hash import SHA256
from Cryptodome.PublicKey import RSA
from Cryptodome.Signature import pkcs1_15

我们有一个plantext:

message = b'hello!'

从明文中查找哈希:

h = SHA256.new(message)

生成随机密钥:

key = RSA.generate(1024, os.urandom)

创建签名:

signature = pkcs1_15.new(key).sign(h)

最后取一个公钥:

pub_key = key.publickey()

检查函数将如下所示:

 def sign(message, pubkey, signature):
      h = SHA256.new(message)
      try:
          pkcs1_15.new(pubkey).verify(h, signature)
          print('Success!')
      except ValueError:
          print('Invalid signature!')
于 2018-04-11T10:33:43.140 回答