我正在使用AES_ENCRYPT()
和AES_DECRYPT()
来获取和解析mysql数据。无论我使用VARCHAR()
还是VARBINARY()
,事情都正常。但这仅适用于我正在检查的少量数据。我的记录已经是VARCHAR()
格式,我更喜欢它们是这样的,加上我想要对这些用户进行加密的细节是他们的联系人和短信(可以根据需要随意添加,以便让您了解可能的数据大小)。现在,如果我使用VARCHAR()
具有合理数量的字符长度,最好坚持使用VARCHAR()
的东西或某个地方/某个时候由于某些原因或问题我将不得不转移到VARBINARY()
?请给我一些好的建议,以便我将VARBINARY()
问题留在后面并继续使用我的VARCHAR()
列类型。让我对它有所了解的问题是,当我谷歌搜索它时,我发现来自用户的混合响应,有些人说用户VARCHAR()
和一些VARBINARY()
,而有些根本没有问题,更令人担心的是MYSQL文档更喜欢或我说的是VARBINARY()
。我知道这可能是因为数据返回在BINARY / BLOB fromat中,但那么为什么允许VARCHAR()
类型?希望将清除我的问题的想法,谢谢
答案 0 :(得分:1)
正如AES_ENCRYPT()
所述:
AES_ENCRYPT()
加密字符串并返回二进制字符串。
我似乎很清楚,结果应存储在二进制字符串类型列中,即VARBINARY
。
至于使用VARCHAR
可能产生的问题:
根据您的字符集,某些字节序列可能无效并可能被拒绝;以及
有意无意的字符集转换可能会破坏您的密文。