我得到了
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的有效值。这些值是随机生成的字符串