0

Python3 の Crypto.Cipher を使用して AES を CTR モードで使用したいと考えています。実際の問題は、2 進数の配列 (文字列形式の「0/1」) があり、AES-CTR を使用してそれらを暗号化/復号化したいことです。この記事を見た後、以下に追加するコードを開発しようとしました。

from Crypto.Cipher import AES
import os
import sys

secret = os.urandom(16)
crypto = AES.new(os.urandom(32), AES.MODE_CTR, counter=lambda: secret)

msg = "Hello World"

#string-->bytes
bytes_msg = str.encode(msg)
print(msg + " > 2bytes > " + str(bytes_msg))

#bytes-->encrypt
encrypted_bytes_msg = crypto.encrypt(bytes_msg)
print(" > encryption > " + str(encrypted_bytes_msg))

#encrypt-->decrypt
decrypted_bytes_msg = crypto.decrypt(encrypted_bytes_msg)
print(" > decryption > " + str(decrypted_bytes_msg))

#bytes-->string
#decrypted_msg = decrypted_bytes_msg.decode() # <= !ERROR HERE!
#print(" > msg > " + decrypted_msg)

私は次のようなものを見ることを期待していました:

Hello World > 2bytes > " b'Hello World' > 暗号化 > #JibberishText# > 復号化 > b'Hello World' > Hello World

この実行の実際の結果は次のとおりです。

Hello World > 2bytes > b'Hello World' > 暗号化 > b'\x8eo\xfc`\xeck\xcf\r4\x1fS' > 復号化 > b'\xc7\x93\x8a\x1dK\xad\xc5\x9d8\x9c \x18'

また:最後の行をコメントアウトしないと、次のエラーが発生します。

ファイル「aes.py」、25 行目、decrypted_msg = decrypted_bytes_msg.decode() UnicodeDecodeError: 'utf-8' コーデックは位置 0 のバイト 0x8e をデコードできません: 無効な開始バイト

モジュールの使用方法を理解するのを手伝ってもらえますか?

4

1 に答える 1