mysql aes_encrypt进入longtext列
是否可以将MySQL AES_ENCRYPT存储到LONGTEXT列中?
我知道我想使用varbinary或blob,但是我有一个表,其中存储了一堆随机的“ settings”,而settings_value列为longtext。
我去那里存储了一个“ smtp邮件密码”,但有点卡住了。
如果没有,我想我将通过php将其存储为十六进制字符串。
解:
我的查询是这样的:
INSERT INTO table (setting_value)VALUES(AES_ENCRYPT(\'password\', \'key\')) ON DUPLICATE KEY UPDATE setting_value=VALUES(setting_value)
正如您将在下面的评论中看到的那样,我尝试将列编码从utf8_unicode_ci更改为utf8_bin,但仍然失败。我更改为latin1_bin并成功了。
我切换回utf8_unicode_ci,并将查询更改为以下内容:
INSERT INTO table (setting_value)VALUES(HEX(AES_ENCRYPT(\'password\', \'key\'))) ON DUPLICATE KEY UPDATE setting_value=VALUES(setting_value)
之所以有效,是因为它将我的值变成了十六进制字符串。
我花了一点时间弄清楚如何正确地收回价值,因此出于文档目的:
$pass = SELECT AES_DECRYPT(BINARY(UNHEX(setting_value)), \'key\') as orig_text FROM table
echo $pass->orig_text
没有找到相关结果
已邀请:
2 个回复
痰降锭骂奸
旅牢斯讲