0

我正在使用AES_ENCRYPT()andAES_DECRYPT()对 mysql 数据进行加密和解密。无论我是否使用VARCHAR(),一切都运行良好,VARBINARY()但这仅适用于我正在检查的少量数据。我有已经VARCHAR()格式化的记录,我更喜欢它们原样加上我想要加密的细节用户是他们的联系人和 SMS,(可以任意数量,让您了解可能的数据大小)。现在,如果我使用VARCHAR()合理数量的字符长度,是否会更好地坚持某事或某处/有时由于某些原因或问题VARCHAR()我不得不转向?VARBINARY()请给我好的建议,以便我把这个问题VARBINARY()抛在脑后,继续使用我的VARCHAR()列类型提前。让我想到它的问题是,当我在谷歌上搜索它时,我发现用户的反应不一,有些人说是用户VARCHAR()VARBINARY()有些人根本没有问题,更令人担忧的是 MYSQL 文档更喜欢或我所说的,VARBINARY(). 我知道这可能是因为数据返回是在 BINARY/BLOB fromat 中的原因,但是为什么VARCHAR()完全允许类型呢?希望能解决我的问题,谢谢

4

1 回答 1

3

如下所述AES_ENCRYPT()

AES_ENCRYPT()加密一个字符串并返回一个二进制字符串。

我似乎很清楚结果应该存储在二进制字符串类型列中,即VARBINARY.

至于使用可能出现的问题VARCHAR

  1. 根据您的字符集,某些字节序列可能无效并且可能被拒绝;和

  2. 无意的字符集转换可能会影响您的密文。

于 2013-05-24T07:30:41.063 回答