将AESCipher对象存储在mySQL中

时间:2017-12-26 11:17:56

标签: mysql binary aes

我正在使用Crypto.Cipher AES加密一些用户数据(无密码)。

返回的是以下形式的AESCipher:

  

b'o \ XAB \ XDD \ X19 \ xaat \ xfcIAN \ XD2 \ X00 \ xe9'

有时会产生空格和非十六进制表示。

  

b“N%?\ x91 \ xe8'J \ xc0 \ x10 p”

     

b'QV8> k \ XD8 \ XFA \ x9a \ X05%\ xe8LJp \ xd0gf'

当我尝试将这些值插入到创建为:

的SQL表中时
data_encrypted VARBINARY(40)

我收到以下警告:

Warning: (1300, "Invalid utf8 character string: 'ABDD19'")

似乎它正在修剪二进制数组,当我查询表中的插入行时,行被有效插入但只有数组的第一个字节,来自b'o \ xab \ xdd \ x19 \ xaat \ xfcian \ xd2 \ x00 \ xe9'它只插入'o'。

我是否必须在格式中指定其他内容?

由于

1 个答案:

答案 0 :(得分:0)

添加_binary解决了警告 self.cur.execute(" INSERT IGNORE INTO成员VALUES(%s,_binary%s ...

我还将数组格式化为十六进制表示,它在MySQL表中看起来更好,解密仍然可以正常运行binascii.b2a_hex