運行報錯:
raise ValueError("Incorrect AES key length (%d bytes)" % len(key))
ValueError: Incorrect AES key length (51 bytes)
token=encrypt(uuid.uuid4().hex.upper(),'\xd7\xdf\xca2\xd0Vhu\xeb\x06\xa0\xba\n\xa2\x07O\xc1\x8b\xcf\x8f2&t\xc0\x92\xc4\xa5\x0b>\xb4\xe7\xbc')
def encrypt(x, key, pad=False):
if pad:
pad = 16 - (len(x) % 16)
x = x + chr(pad) * pad
iv = os.urandom(16)
y = AES.new(key.encode("utf8"), AES.MODE_CBC, iv) #這一行報錯,32位的key為什么轉碼就變成了51?難道不是utf8字符?
return base64.b64encode(iv + y.encrypt(x))
uj5u.com熱心網友回復:
轉成 utf8 , 會根據不同字符,做不同變化, 普通字符(好像是編碼0-127)不變編碼, 漢字變2倍長度看這個例子, 我你的KEY 里取的。
k1 = '\x79\x0b'
k2 = k1.encode("utf8")
print(len(k1))
print(k1)
print(len(k2))
print(k2)
k1 = '\xd7\xdf\xca\xd0\xeb\xa0\xba\xa2\xc1\x8b\xcf\x8f\xc0\x92\xc4\xa5\xb4\xe7'
k2 = k1.encode("utf8")
print(len(k1))
print(k1)
print(len(k2))
print(k2)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/139423.html
