зашифровать данные, которые уже находятся в таблице MySQL - PullRequest
0 голосов
/ 06 октября 2018

В моей базе данных на данный момент около 2000 строк, ранее структура была varchar (200).С тех пор я изменил структуру на varbinary.

Теперь, когда я вставляю данные в свою таблицу, я в любом случае использую

AES_ENCRYPT('Obama', 'sadhjksauejs') (just an example)

, я хочу использовать AES_ENCRYPT для всех данных, которые в настоящее время находятся в базе данных, поэтому получите данные,зашифруйте его и поместите обратно в базу данных, не теряя исходных данных.

Каков наилучший способ сделать AES_ENCRYPT для всех данных, которые есть в данный момент?

Ответы [ 2 ]

0 голосов
/ 14 октября 2018

Здесь есть несколько вещей, на которые нужно обратить внимание ...

Да, VARBINARY - это соответствующий тип данных, однако AES_ENCRYPT - это блок на основе блоков, который дополнит ваш открытый текст необходимымдлина, поэтому ваш зашифрованный текст, вероятно, будет длиннее, чем оригинал.Документация дает это для вычисления правильного размера столбца:

16 * (усечение (string_length / 16) + 1)

Вы должны проверитьчто столбец все еще будет достаточно длинным, чтобы содержать любое значение, которое вы хотите сохранить.

Во-вторых, поскольку вы уже добавляете новые записи в зашифрованном виде, вам необходимо убедиться, что ваша инструкция по обновлению ограничена только теми записями, которые все еще находятся в незашифрованном виде.

После того, как вы взяли эти записиПринимая во внимание (и принимая во внимание некоторый идентификатор или созданный столбец), ваш оператор UPDATE будет выглядеть примерно так

UPDATE `yr_table` SET `col1` = AES_ENCRYPT(`col1`,'sadhjksauejs'),
`col2` = AES_ENCRYPT(`col2`,'sadhjksauejs') 
WHERE `id` > whatever;

(т. е. мало чем отличается от предложения @Sadikhasan)

0 голосов
/ 06 октября 2018

Сначала вы должны создать новое поле в вашей таблице encryptedText.

UPDATE table SET encryptedText = AES_ENCRYPT(textField,'sadhjksauejs');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...