私はpyCrpytoのRSAクラスで働いています。しかし、私はこれらの暗号をシリアル化できる必要があります。私は、AESのような他のpyCrypto暗号を、-ingあらゆる問題pickle
を持っていないが、私は、RSA暗号pickle
にしようとしたとき、私は次のようなエラーに遭遇:PyCrypto RSAとピクルス
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
は、私はこれを回避するために何かできることはあります - 別のシリアライゼーションフレームワーク、RSAオブジェクト用の別の構築メソッドなど、またはこれは単なるun-pickle
-ableオブジェクトですか?
あなたはこのようなオブジェクトの背後にあるキーをシリアル化する必要があると思います。 PyCryptoには、キーをエクスポートしてインポートする機能があります。あなたはそれらを試しましたか? @ArtjomB。 –
私はそれを試してみますが、私は暗号を1つのファイルにシリアル化できることを期待していました。あなたは私がちょうど(ピクルではなく、PyCryptoのエクスポートを使用して)キーをシリアル化し、それをインポートして暗号を再構築することを提案していますか? – bkaiser