Я получаю Error 131073 while instatiating the CFB mode
, когда пытаюсь использовать значение IV с префиксом.Когда я изменяю его на случайный, он работает, но мне нужно, чтобы он был с префиксом.
То, что я пробовал, выдает эту ошибку:
import base64
from Crypto.Cipher import AES
import hashlib
from Crypto import Random
import binascii
def pad(s):
return s + b"\0" * (AES.block_size - len(s) % AES.block_size)
def encrypt(message, key, key_size=256):
message = pad(message)
iv = Random.new().read(AES.block_size)
cipher = AES.new(key, AES.MODE_CFB, iv)
return base64.b64encode(cipher.encrypt(message))
key = hashlib.sha256(b'P9KcPLf+q21f9DUnI0cyP1xgALRa8+uKfZXiNIcjphM=').digest()
key1 = base64.b64encode(key)
iv_value = b'lEvSlTN0Q7gu9sAUvPTySQ=='
iv = base64.b64encode(iv_value) #How can prefix this?
cipher = AES.new(key, AES.MODE_CFB, iv)
message = Mac_AddressBytes + ip_address_Bytes + DeviceIdBytes
msg = iv + cipher.encrypt(message)
s = encrypt(message, key)
DeviceIdentity = "0x" + s.decode('utf-8')
print(str(DeviceIdentity))
Но когда я устанавливаю IV как случайный, яполучаю желаемый вывод.
iv = Random.new().read(AES.block_size)
Как использовать префиксное значение для IV?
Примечание: Mac_AddressBytes
, ip_address_Bytes
и DeviceIdBytes
являются действительными значениями MACадрес, IP-адрес, DeviceID Значения представляют собой случайные строки