У меня есть байтовый массив, который является 128-битным ключом AES, и я хочу использовать его на скрипте Python для шифрования некоторой информации с использованием вышеупомянутого ключа.Использование байтового массива как ключа для алгоритма AES в Python
У меня есть ключ, сохраненный как шестнадцатеричная строка, что-то вроде «27821D90D240EA4F56D0E7612396C69E» (очевидно, это не настоящий ключ, но имеет тот же формат).
Я создал массив байтов из этого ключа, то есть способ, который я использую AES ключи на других языках (Java, C# и PHP) до сих пор, как это:
AES_KEY = bytearray.fromhex('27821D90D240EA4F56D0E7612396C69E')
Это работает отлично , но потом, когда я пытаюсь использовать его для создания шифра, он жалуется, что он хочет строку в первом параметре:
cipher = AES.new(AES_KEY, AES.MODE_CBC, os.urandom(16));
TypeError: argument 1 must be string or read-only buffer, not bytearray
Я пытался получить строку из массива байтов, а не как :
AES_KEY = bytearray.fromhex('27821D90D240EA4F56D0E7612396C69E').decode()
или
AES_KEY = bytearray.fromhex('27821D90D240EA4F56D0E7612396C69E').decode('utf-8')
без толка, потому что есть не-ASCII и не Юникод значения в этом ключе.
Замена ключа НЕ является опцией.
Любые идеи?
Большое спасибо заранее,
В какой библиотеке вы используете, pycrypto? – kennytm
@kennytm да. Я думаю, что мне удалось найти решение. –