与python-rsa的sign函数混淆

时间:2019-08-04 05:59:12

标签: python rsa

我正在尝试使用python-rsa模块对计算机之间传递的消息进行加密。但是,文档(https://stuvel.eu/python-rsa-doc/usage.html)中描述的rsa.sign()使我感到困惑。 请记住,我还没有对密码进行任何操作。

在文档中,对消息签名的描述如下:

(pubkey, privkey) = rsa.newkeys(512)
message = 'Go left at the blue tree'
signature = rsa.sign(message, privkey, 'SHA-1')

令人困惑的部分是验证:

message = 'Go left at the blue tree'
rsa.verify(message, signature, pubkey)

消息应该是什么?如果邮件是我发送的,那么签名是什么?

在参考文献中,签名描述为the signature block, as created with rsa.sign(),而消息描述为the signed message. Can be an 8-bit string or a file-like object.

我觉得我缺少明显的东西。

1 个答案:

答案 0 :(得分:0)

这是因为签名消息不会对其进行加密。签名的目的是证明发件人的身份。 RSA是public key cryptography的一种。当您想向Alice发送加密消息时,必须要求她提供她的公共密钥。然后,您将使用该公共密钥来加密消息并将其发送给Alice。如果她拥有私钥,则可以解密该消息并读取它,其他任何人都不能。对消息签名使用私钥来生成签名。拥有您的公钥和消息的每个人都可以使用签名确认您是私钥的所有者。

如果您只是为了学习而这样做,那很好,但是在现实生活中不要使用sha-1。它已经过时了,不再被认为是安全的。