2017-02-09 13 views
1

私は、Base64で暗号化された暗号化された暗号化された暗号化されたコードを、ECBモードのAES-128を使って復号化しようとしています。Python AES暗号化

私はこのチュートリアルを使用しています:http://docs.python-guide.org/en/latest/scenarios/crypto/

それは、このコードが含まれています

from Crypto.Cipher import AES 
# Encryption 
encryption_suite = AES.new('This is a key123', AES.MODE_CBC, 'This is an IV456') 
cipher_text = encryption_suite.encrypt("A really secret message. Not for prying eyes.") 

# Decryption 
decryption_suite = AES.new('This is a key123', AES.MODE_CBC, 'This is an IV456') 
plain_text = decryption_suite.decrypt(cipher_text) 

私はaes_2.pyファイルにコードをコピーしてきました。そして、私が使用してそれを実行している:sudo python3 aes_2.py

は私が取得:

Traceback (most recent call last): 
    File "aes_2.py", line 21, in <module> 
    cipher_text = encryption_suite.encrypt("A really secret message. Not for prying eyes.") 
    File "/usr/local/lib/python3.5/dist-packages/Crypto/Cipher/blockalgo.py", line 244, in encrypt 
    return self._cipher.encrypt(plaintext) 
ValueError: Input strings must be a multiple of 16 in length 

EDIT 1

私は私が解読するのに言われたファイルを持っています。私は鍵とファイルといくつかの仕様を解読に与えました。このサイトでは、キーを入力するとhttp://aesencryption.net/、128ビット、テキストがサイトに解読されます。

上記のコードの場合。私はいくつかの質問があります。 'This is an IV456'の場合はどうすればよいですか?また、このコードにはどのビットレベルが指定されていますか?

+0

@アーマンあなたは正しいです、私はいくつかの文字を追加し、それは走った。奇妙なことに、私はチュートリアルをまったく変更しませんでした。 – Rorschach

答えて

0

あなたはAES.MODE_CBCを使用しています。つまり、入力文字列が'This is a key123'で16バイトの倍数である必要があります。

このモードを使用したい場合は、文字列を埋め込む必要があります。このgit repoは、CBCモードでのパディングを使用するAES暗号化の素晴らしい例です。