据我所知,我应该可以使用RSA来确保真实性或隐私,正如我所愿。就我而言,我想确保真实性,所以我使用私钥加密数据,并允许任何人使用公钥解密数据。数据并不是真的秘密,但我需要保证它是由公钥(和私钥)所有者创建的。使用PyCrypto使用RSA公钥解密使用
当我尝试使用PyCrypto解密时,我得到PyCrypto没有私钥错误。该代码是这样的:
def _decrypt_rsa(decrypt_key_file, cipher_text):
from Crypto.PublicKey import RSA
from base64 import b64decode
key = open(decrypt_key_file, "r").read()
rsakey = RSA.importKey(key)
raw_cipher_data = b64decode(cipher_text)
decrypted = rsakey.decrypt(raw_cipher_data)
return decrypted
我用路径公钥文件调用它不是由我生成的加密数据并没有与Python,但PHP做(以OpenSSH格式)。在PHP中,有一个可以轻松解密这些数据的函数openssl_public_decrypt
。
是否有可能使用PyCrypto公钥解密?
你把它颠倒过来。公钥用于加密,私钥用于解密。 – jchysk
公开解密与加密相同。你的问题可以这样解决:'decrypted = rsakey.encrypt(raw_cipher_data,0)' – Helio
如果源真的用私钥加密,那么他们已经有效地签署了数据。一些工具,如Java,可以让你做到这一点。要解密签名,您可以使用公钥(或私钥的公共部分)。请参阅:https://stackoverflow.com/questions/48280670/pycrypto-how-to-view-raw-rsa-signature-data –