3
コードサンプル以下同じ結果が暗号化/復号化操作の後、元のテキストを返さない返さないと私はPythonのAESは/復号化が
from Crypto.Cipher import AES
text = """This is plain text
to use.
It should be exqctly 128 characters long to avoid padding and it is split
with new lines as in
file"""
password = "password........"
block = 32
mode = AES.MODE_CBC
enc = AES.new(password, mode)
encrypted = enc.encrypt(text)
print "ORIGINAL: " + text
print "ENCRYPTED: " + str(encrypted)
print "DECRYPTED: " + str(enc.decrypt(encrypted))
一つは、なぜ最初の部分を伝えることができますなぜそれを把握しようとしています暗号化テキストの形式が間違っていますか?
明示的にIVを設定して取得できませんか?暗号化装置のIVを取得し、復号化装置のIVを設定する方がよい。 –
コンストラクタで設定できます( 'AES.new'の3番目のパラメータ)。私は現在の実装ではデフォルトのIV(ランダムなものではない)を使用していると思うので、それを暗号化装置から復号化装置にコピーすることは厳密には必要ではありません(暗号化の前に*行う必要があります)。セキュリティ上の理由から、暗号化ごとに異なる(ランダムな)IVを使用するのが最善ですが、何とか復号器に渡す必要があるため、追加の努力をする価値はありません。http:// enを参照してください。詳細については、wikipedia.org/wiki/Initialization_vectorを参照してください。 – MartinStettner