2012-05-18 4 views
-1

У меня небольшая проблема с mysql. У меня есть данные в таблице, и я хочу их зашифровать. Я использую эти команды:Mysql: Шифрование старых данных в базе данных

UPDATE `Name_Table` SET `COL1`=(SELECT AES_ENCRYPT(`COL1`, 'difficultKey')) WHERE 1 

и

UPDATE `Name_Table` SET `COL1`=AES_ENCRYPT(`COL1`, 'difficultKey') WHERE 1 

Но это Commend уничтожить мои данные (я не могу расшифровать). Вы можете мне помочь?

Я использую это: - PHPMyAdmin (закладка - SQL) - utf8_general для сравнения строк

Пожалуйста, вы можете мне помочь?

+0

Что необходимо для шифрования данных? – zerkms

+0

Если вы хотите скрыть пароли пользователей, вы должны использовать хеширование вместо шифрования. –

+0

Нам нужно зашифровать адрес электронной почты и другие важные данные для клиента. –

ответ

1

Я чувствую, что тип данных вашего столбца - «varchar/char». Вот почему данные уничтожаются. Очевидно, вы должны хранить все, что должно быть AES_ENCRYPTed в формате blob.

Я думаю, что это связано с тем, что поле varchar не может обрабатывать определенные символы, созданные из шифрования.

Цитирование документации MYSQL для AES_ENCRYPT.

"AES_ENCRYPT() шифрует строку и возвращает двоичную строку"

Таким образом, вам понадобится BLOB (Binary Large Object).

+0

Я понимаю, что дешифровать я могу дать BLOB? 'SELECT AES_DECRYPT (COLofBLOB, 'трудноKey') FROM Name_table'? Последние вопросы: Если я зашифрую все данные в таблице, как я могу искать, где? Я могу использовать: '((...) WHERE col = AES_DECRYPT (col, 'KEY'))'? –

Смежные вопросы