首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >存储以mysql编码的信息

存储以mysql编码的信息
EN

Stack Overflow用户
提问于 2010-02-15 18:16:27
回答 3查看 658关注 0票数 2

我的数据库中有一个字段,我想存储编码后的信息。所以我想使用AES_ENCRYPT(),AES_DECRYPT()函数。

我对正确的用法有个小问题...

这就是我需要修改的代码,但是我尝试了很多方法,总是得到SQL语法错误。

代码语言:javascript
复制
 $query="update users set test='".$_POST['info']."' where name='".$_SESSION['user']."'";
 mysql_query($query) or die(mysql_error());

我试过这样做:

代码语言:javascript
复制
  $query="update users set (test='".$_POST['info']."',  AES_ENCRYPT('".$_POST['info']."', 'secretkey') ) where name='".$_SESSION['user']."'";
     mysql_query($query) or die(mysql_error());

还有这个:

代码语言:javascript
复制
 $query="update users set test='".$_POST['info']."' where name='".$_SESSION['user']."'";
     mysql_query(AES_ENCRYPT('$query','secretkey') or die(mysql_error());
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-02-15 18:24:26

好吧,试试这个:

代码语言:javascript
复制
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                   |
+--------------------------------+
票数 1
EN

Stack Overflow用户

发布于 2010-02-15 18:26:00

第二个代码片段没有将AES_ENCRYPT的返回值赋给任何列,因此您的UPDATE语法不正确。参见http://dev.mysql.com/doc/refman/5.1/en/update.html

如果要将加密数据存储在名为"info“的列中,则update语句应为...info=AES_ENCRYPT( ...

第三段代码是无效的,因为您正在尝试计算PHP语言中名为AES_ENCRYPT的函数。很可能您的PHP环境中没有这样的函数,因此PHP解释器会因错误而中止。

票数 1
EN

Stack Overflow用户

发布于 2010-02-15 18:26:44

代码语言:javascript
复制
`$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客户端。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2265199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档