Ich arbeite mit pyCrpyto RSA Klasse:PyCrypto RSA und Pickle
from Crypto.Cipher import PKCS1_v1_5
from Crypto.PublicKey import RSA
message = 'To be encrypted'
key = RSA.generate(2048)
cipher = PKCS1_v1_5.new(key)
ciphertext = cipher.encrypt(message)
Dieser Code läuft gut, und ich bin in der Lage, den verschlüsselten Text zu entschlüsseln. Allerdings muss ich in der Lage sein, diese Ziffern zu serialisieren. Ich habe kein Problem pickle
-ing andere PyCrypto Chiffren hatte, wie AES, aber wenn ich zu pickle
eine RSA-Chiffre versuche ich laufe in die folgenden Fehler:
from Crypto.Cipher import PKCS1_v1_5
from Crypto.PublicKey import RSA
import pickle
message = 'To be encrypted'
key = RSA.generate(2048)
cipher = PKCS1_v1_5.new(key)
pickle.dump(cipher, open("cipher.temp", "wb"))
cipher = pickle.load(open("cipher.temp", "rb"))
ciphertext = cipher.encrypt(message)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Crypto/Cipher/PKCS1_v1_5.py", line 119, in encrypt
randFunc = self._key._randfunc
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Crypto/PublicKey/RSA.py", line 126, in __getattr__
raise AttributeError("%s object has no %r attribute" % (self.__class__.__name__, attrname,))
AttributeError: _RSAobj object has no '_randfunc' attribute
Gibt es etwas, was ich tun kann, dies zu umgehen - ein anderes Serialisierungsframework, eine andere Konstruktionsmethode für das RSA-Objekt, oder ist dies nur ein Objekt?
Sie haben würden die Schlüssel serialisiert, die hinter einem solchen Objekt sind. PyCrypto stellt Ihnen Funktionen zur Verfügung, mit denen Sie die Schlüssel exportieren und importieren können. Hast du das probiert? –
@ArtjomB. Ich werde es versuchen, aber ich hatte gehofft, die Chiffre in einer einzigen Datei zu serialisieren. Sie schlagen vor, ich nur den Schlüssel serialisieren (mit PyCrypto exportieren, nicht Pickle) und dann die Chiffre rekonstruieren, indem Sie es importieren? – bkaiser