Python 仅使用公钥解密签名

标签 python encryption

一家公司想要向我发送一个数字签名,即这个 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/

相关文章:

python - 从边缘列表创建邻居列表(Python : accessing tuples with first value specified)

node.js - MongoDB 客户端字段级加密 - NodeJS 驱动程序 - keyAltNames 字段未在本地 keystore 的数据 key 文档中创建

使用 SSL 密码连接 nginx websocket

java - java和android的加密区别

python - 获取最近几天创建的对象列表(按天分组)

Python 父类检查子类中要在类函数中使用的属性

python - 使用 Popen 和启动/等待在 python 中运行子进程时无法获取退出代码

python - OpenCV findContours() 只返回一个外部轮廓

php - 出现在 PHP 文件开头的垃圾代码

Java Crypto AES/GCM/NoPadding 适用于 Windows,但不适用于 Docker (AEADBadTagException)