我知道这个问题被问了无数次,但是其他提出这个问题的人不够清楚,或者根本不可能(尽管没人说),无论如何,没人会给出明确的答案(也许是代码)。所以:我试图构建一种加密货币,但这纯粹是出于娱乐目的,因此我不需要超级安全,因此我想使用RSA来验证用户的真实性,我用私钥和然后我将消息和加密版本一起发送,然后在需要验证时要求我提供公共密钥并解密。现在问题来了:显然,它需要私钥来解密(我显然不能拥有),而在数学上,如果没有它,它会完美地工作。有没有办法解决?一种类似的方法,但不是RSA也可以。
>>> from Crypto.Signature import pkcs1_15
>>> from Crypto.Hash import SHA256
>>> from Crypto.PublicKey import RSA
>>>
>>> message = 'To be signed'
>>> key = RSA.import_key(open('private_key.der').read())
>>> h = SHA256.new(message)
>>> signature = pkcs1_15.new(key).sign(h)
在另一端,接收者可以使用匹配的公共RSA密钥来验证签名(并因此验证消息的真实性:
>>> key = RSA.import_key(open('public_key.der').read())
>>> h = SHA.new(message)
>>> try:
>>> pkcs1_15.new(key).verify(h, signature)
>>> print "The signature is valid."
>>> except (ValueError, TypeError):
>>> print "The signature is not valid."
希望如果没有,这里的链接是页面本身的链接:https://pycryptodome.readthedocs.io/en/latest/src/signature/pkcs1_v1_5.html