一家公司想要向我发送一个数字签名,即这个 method 。我只有公钥。此签名用于验证它的来源并且包含我需要的用户详细信息。
我不明白的是如何仅使用公钥和我发送的签名来解密签名。从我能找到的示例中可以做的就是验证签名。如果不知道加密的字符串是什么,您就无法解密。
from ecdsa import SigningKey, NIST384p
sk = SigningKey.generate(curve=NIST384p)
vk = sk.get_verifying_key()
signature = sk.sign("message")
assert vk.verify(signature, "message")
我是误解了还是他们建议使用不同类型的数字签名?
最佳答案
首先,您需要使用VerifyingKey。 (另请参阅@J0HN 优秀评论) 类似的东西(来源:https://github.com/warner/python-ecdsa):
from ecdsa import VerifyingKey, BadSignatureError
vk = VerifyingKey.from_pem(open("public.pem").read())
message = open("message","rb").read()
sig = open("signature","rb").read()
try:
vk.verify(sig, message)
print "good signature"
except BadSignatureError:
print "BAD SIGNATURE"
关于Python 仅使用公钥解密签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31024460/