【发布时间】:2013-12-08 11:40:33
【问题描述】:
我想用RSA 公钥和PyCrypto 解密一条消息我正在使用下面的代码,但得到no private key 错误下面的代码应该改变什么?
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
import base64
licence_key="bla bla"
licence_key_in_bytes=licence_key.encode("utf-8")
encrypted=base64.b16decode(licence_key_in_bytes)
key = open("public_key", "r").read()
rsakey = RSA.importKey(key)
rsakey = PKCS1_OAEP.new(rsakey)
decrypted_message= rsakey.decrypt(encrypted)
【问题讨论】:
-
API 假设您使用公钥加密并使用私钥解密。这就是 PKI 通常的工作方式。如果你真的想逆转这个过程,你可能需要编写自己的 Python API。
-
我在做什么不寻常的事?
-
是的。通常的用途是您分发一个公钥,任何人都可以使用该公钥加密消息并将其发送给您,并且只有您可以使用您的私钥解密消息。请记住,RSA 私钥包括公钥。也就是说,如果你有私钥,那么你就有公钥,但反过来就不行。我建议您阅读一些有关公钥加密如何工作的基本知识。
-
我正在尝试为我的应用程序创建像 BASE32(CONCAT(DATA, PRIVATE_KEY_ENCRYPTED(HASH(DATA)))) 这样的许可证密钥,我现在应该怎么做?
-
您要签名的声音,而不是加密的声音。这些是不同的概念。如果您只有公钥,则无法签名(或解密)。另请注意,二进制(字节)与十六进制不同,因此调用 b16decode 没有意义...
标签: python rsa public-key-encryption pycrypto