Хранение информации, закодированной в mysql - PullRequest
2 голосов
/ 15 февраля 2010

У меня есть поле в базе данных, и я хочу сохранить закодированную информацию. Поэтому я хотел бы использовать функции AES_ENCRYPT (), AES_DECRYPT ().

У меня есть небольшая проблема с правильным использованием ...

Так что это мой код, который мне нужно изменить, но я пробую это разными способами и всегда получаю ошибку синтаксиса SQL.

 $query="update users set test='".$_POST['info']."' where name='".$_SESSION['user']."'";
 mysql_query($query) or die(mysql_error());

Я пытался так:

  $query="update users set (test='".$_POST['info']."',  AES_ENCRYPT('".$_POST['info']."', 'secretkey') ) where name='".$_SESSION['user']."'";
     mysql_query($query) or die(mysql_error());

и это:

 $query="update users set test='".$_POST['info']."' where name='".$_SESSION['user']."'";
     mysql_query(AES_ENCRYPT('$query','secretkey') or die(mysql_error());

Ответы [ 3 ]

1 голос
/ 15 февраля 2010

Второй фрагмент кода не присваивает возвращаемое значение AES_ENCRYPT ни одному столбцу, поэтому ваш синтаксис UPDATE неверен. См http://dev.mysql.com/doc/refman/5.1/en/update.html.

Если вы хотите сохранить зашифрованные данные в столбце с именем "info", оператором обновления будет ... info = AES_ENCRYPT (...

Третий фрагмент кода недействителен, потому что вы пытаетесь оценить функцию с именем AES_ENCRYPT в PHP. Скорее всего, в вашей среде PHP такой функции нет, поэтому интерпретатор PHP прерывается с ошибкой.

1 голос
/ 15 февраля 2010

Ну, попробуйте это:

mysql> create table test(user varchar(100), password varchar(100));
Query OK, 0 rows affected (0.09 sec)

mysql> insert into test(user,password) values('patrick', AES_ENCRYPT('password', 'mykey'));
Query OK, 1 row affected (0.00 sec)

mysql> select * from test where user = 'patrick';
+---------+------------------+
| user    | password         |
+---------+------------------+
| patrick | stuff            |
+---------+------------------+

mysql> update test set password = AES_ENCRYPT('new password', 'mykey') where user = 'patrick';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select AES_DECRYPT(password, 'mykey') from test where user = 'patrick';
+--------------------------------+
| AES_DECRYPT(password, 'mykey') |
+--------------------------------+
| new password                   |
+--------------------------------+
0 голосов
/ 15 февраля 2010
`$query="update users set (test='".$_POST['info']."',  test_encrypted = AES_ENCRYPT('".$_POST['info']."', 'secretkey') ) where name='".$_SESSION['user']."'";
 mysql_query($query) or die(mysql_error());`

Если вы хотите полностью зашифровать SQL-запрос, используйте поддержку ssl на сервере, а не на стороне клиента php.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...