MySQL - 如何存储AES_Encrypted数据?

2022-08-30 22:05:03

所以我一直在浏览互联网,并遇到了MySQL内置函数AES_ENCRYPT。它似乎不太难使用,但一些来源告诉我将加密数据存储为VARCHAR,有些人说将其存储为BLOB。我应该将加密数据存储为什么?


答案 1

许多加密和压缩函数返回结果可能包含任意字节值的字符串。如果要存储这些结果,请使用数据类型为 VARBINARY 或 BLOB 二进制字符串的列。这将避免尾随空格删除或字符集转换的潜在问题,这些问题会更改数据值,例如,如果使用非二进制字符串数据类型(CHAR,VARCHAR,TEXT),则可能发生此类问题。

资料来源:http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html


答案 2

如果您需要使用 VARCHAR 而不是 BLOB,则将加密的二进制文件转换为 Base64,它仅使用可打印字符,并且可以安全地存储为 VARCHAR。当然,在解密之前,您需要将其从Base64转换回二进制文件。


推荐