據我所知,我應該可以使用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 –