2

我试图通过 DSA 加密来验证文件的签名。我正在使用 Pyton 3.6 和 pycryptodomex 版本 3.4.7。不幸的是,文档代码似乎已经过时(试图让一个简单的例子工作):

 from Crypto.PublicKey import DSA
 from Crypto.Signature import DSS
 from Crypto.Hash import SHA256

 # Create a new DSA key
 key = DSA.generate(2048)
 f = open("public_key.pem", "w")
 f.write(key.publickey().exportKey(key))

 # Sign a message
 message = b"Hello"
 hash_obj = SHA256.new(message)
 signer = DSS.new(key, 'fips-186-3')
 signature = key.sign(hash_obj)

 # Load the public key
 f = open("public_key.pem", "r")
 hash_obj = SHA256.new(message)
 pub_key = DSA.import_key(f.read())

 # Verify the authenticity of the message
 if pub_key.verify(hash_obj, signature):
     print "OK"
 else:
     print "Incorrect signature"

这是我的代码,试图修复不起作用的函数调用:

from Cryptodome.PublicKey import DSA
from Cryptodome.Signature import DSS
from Cryptodome.Hash import SHA256

# Create a new DSA key
key = DSA.generate(2048)
print(key.exportKey())
# Sign a message
message = b"Hello"
hash_obj = SHA256.new(message)
signer = DSS.new(key, 'fips-186-3')
signature = signer.sign(hash_obj)

# Load the public key

pub_key = DSA.import_key(key.publickey().exportKey())
verifyer = DSS.new(pub_key, 'fips-186-3')


hash_obj = SHA256.new(message)


# Verify the authenticity of the message
if verifyer.verify(hash_obj, signature):
    print("OK")
else:
    print("Incorrect signature")

有人可以帮我解决这个话题吗?

4

0 回答 0