将AESCipher对象存储在mySQL中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将AESCipher对象存储在mySQL中相关的知识,希望对你有一定的参考价值。

我正在使用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'。

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

谢谢

答案

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

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

以上是关于将AESCipher对象存储在mySQL中的主要内容,如果未能解决你的问题,请参考以下文章

继承中代码的执行顺序

Tutorial中代码的区别及不同效果

第一次在AWS中代码运行缓慢

Java中代码块执行顺序

Qt C++ 项目中 Xamarin 项目中代码的可重用性

Yunxion资产监测设备技术中代码优化