Можно ли сохранить MySQL AES_ENCRYPT в столбце LONGTEXT?
Я знаю, что предположим, для использования varbinary или blob, но у меня есть таблица, которую я хранюкуча случайных «настроек», и столбец 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