如何使用 Python 将 128 位 AES 加密密钥转换为字符串?

How can I convert 128-bit AES encryption key to a string using Python?

我正在尝试将字节格式的 128 位 AES 密钥解码为字符串以将其存储在数据库中。我尝试使用 Python 内置 decode()asciiutf-8 编解码器,但我收到以下错误:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xd9 in position 1: ordinal not in range(128)

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x94 in position 2: invalid start byte

我正在使用 cryptography.io 库来实现它。

二进制通常以十六进制或 base64 编码,以便将其作为文本处理。 Python的binascii模块可以用来做这两种类型的编码,如下所示:

import random
import binascii

keybinary=random.randrange(0, pow(2,128)).to_bytes(16, byteorder='big')
print('keybinary', keybinary)

keyhex=binascii.b2a_hex(keybinary).decode("utf-8").strip()
print('keyhex', keyhex)

keyb64=binascii.b2a_base64(keybinary).decode("utf-8").strip()
print('keyb64', keyb64)

这会产生:

keybinary b'b3\xfd\xa9\xfe\x11\x86op\x10\x02\x0b\x1bE\x1f\x89'
keyhex 6233fda9fe11866f7010020b1b451f89
keyb64 YjP9qf4Rhm9wEAILG0UfiQ==