使用字节数组作为Python中AES算法的关键

时间:2016-10-21 15:47:50

标签: python cryptography aes

我有一个128位AES密钥的字节数组,我想在Python脚本上使用那个,使用上述密钥加密一些信息。

我将密钥存储为十六进制字符串,例如" 27821D90D240EA4F56D0E7612396C69E" (显然这不是真正的关键,但格式相同)。

我已经从该密钥生成了一个字节数组,这就是我到目前为止在其他语言(Java,C#和PHP)中使用AES密钥的方式,如下所示:

AES_KEY = bytearray.fromhex('27821D90D240EA4F56D0E7612396C69E')

这样可以正常工作,但是当我尝试使用它来创建密码时,它会抱怨它需要第一个参数中的字符串:

cipher = AES.new(AES_KEY, AES.MODE_CBC, os.urandom(16));
  

TypeError:参数1必须是字符串或只读缓冲区,而不是   字节组

我试图从字节数组中获取一个字符串,如:

AES_KEY = bytearray.fromhex('27821D90D240EA4F56D0E7612396C69E').decode()

AES_KEY = bytearray.fromhex('27821D90D240EA4F56D0E7612396C69E').decode('utf-8')

无效,因为该密钥中存在非ascii和非unicode值。

更换钥匙不是一种选择。

有什么想法吗?

提前多多感谢,

1 个答案:

答案 0 :(得分:2)

显然这就是诀窍:

AES_KEY = str(bytearray.fromhex('27821D90D240EA4F56D0E7612396C69E'))

现在看起来非常明显,不是吗?