私はAESの専門家ではなく、さらに非常に限定されたPython 2環境に解読機能を提供しなければなりません。長い暗号文のための単純なPython AES解読
Iは、64バイトのテスト暗号メッセージと共に32バイトキーと16バイトの初期化ベクトル有する - タイプstr
の全てを。 AESは暗号ブロック連鎖モードで動作します。
pycrypto
ですべて動作し、タイプunicode
の64シンボルの復号化メッセージが表示されます。私はそれがAESのためのいくつかの空想のコンパイル依存関係を持っていると考えているよう
from Crypto.Cipher import AES
cipher = AES.new(key, AES.MODE_CBC, vector)
decryption = cipher.decrypt(message).decode()
print(decryption)
は残念ながら
pycrypto
自体は、最終的な環境ではサポートされません。 純粋なPythonの選択肢がありますが
pyaes
と呼ばれる:私は最初の16のバイトをスライスし、正しく(タイプ
unicode
の)復号化されたメッセージの最初の16個のシンボルを持って
import pyaes
cipher = pyaes.AESModeOfOperationCBC(key, vector)
decryption = cipher.decrypt(message[0:16]).decode()
print(decryption)
注意してください。
しかし、一度私は完全なメッセージを試して、私は ValueError: ciphertext block must be 16 bytes
を取得します。
message[16:32]
をスライスしても、 UnicodeDecodeError: 'ascii' codec can't decode byte 0xb8 in position 0: ordinal not in range(128)
が得られます。
私の場合、pyaes
を使用してより長い暗号文を解読するにはどうすればよいですか?
秘密平文(パディング)末尾のスペースをと、この
{"valueInt":123, "valueFloat":1.23, "valueString":"123"}
のように見えます。
この問題はpyaesには関係なく、** bytes **のシーケンスは暗号化および復号化できますが、Unicode変換のバイトは正しくありません。私はpython-2.7という質問にタグをつけ、 'cipher.decrypt(message)'から** unicode **。*という64シンボルの復号化されたメッセージを得ることに驚いています。しかし、私は[mcve]なしでもっと言うことはできません... –