如何在AES数据库中存储AES加密信息

Raf*_*yan 5 mysql encryption aes

我有一条信息,使用aes-256-cbc加密编码.我该如何将其存储在数据库中?目前我正在使用VARCHAR(255)utf8_bin.这样可以,还是应该使用其他字段类型,如VARBINARY(255)?在这种情况下,是否有可能使用VARCHAR丢失一些数据?谢谢.

Ilm*_*nen 7

尽管在数据库中存储加密(而不是散列)密码的可能性(适当性),AES密文是二进制数据,因此应该如此存储,即在BINARY/VARBINARY列或a中BLOB.

也可以将密文编码为例如base64,然后将其存储在文本(即CHAR/ VARCHAR/ TEXT)列中.这是空间高效的少了,但它可以可视地检查数据或把它可以具有处理含有任意的二进制数据域的麻烦的程序之间时,有时会更方便,例如.

  • AES密文可以包含无效的UTF-8字节序列,因此我不会尝试将其视为UTF-8.我没有测试是否会发生任何数据损坏*,但不能保证它*不会*.使用像`latin1`*这样的单字节字符集的`VARCHAR`可能*更安全,但同样,我不会使用它,因为有一个更合适的工具(`VARBINARY`)可用. (2认同)