2010-02-15 5 views
2

데이터베이스에 필드가 있고 인코딩 된 정보를 저장하려고합니다. 그래서 AES_ENCRYPT(), AES_DECRYPT() 함수를 사용하고 싶습니다.mysql에 ecoded 정보 저장하기

내가 올바른 사용에 대한 약간의 문제가

는 ... 그래서 내가 수정할 필요 내 코드입니다,하지만 난 그것을 여러 가지 방법을 시도하고 항상 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()); 

감사합니다.

답변

1

음,이 시도 :

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

$ query = "사용 업데이트 rs set test = AES_ENCRYPT ('newvalue', 'mykey') 여기서 id = '0' "; mysql_query ($ query) 또는 die (mysql_error()); 필드의 시작 값은 START입니다. 실행 후 위의 쿼리 필드는 비었을 것입니다. 필드는 VARCHAR 100, utf8_bin입니다. 뭐가 문제 야? –

+0

비어 있거나 인쇄 할 수 없으며 볼 수 없습니까? "SELECT AES_DECRYPT (test, 'mykey') WHERE id = '0'; 그것을 확인하십시오. – Patrick

+0

phpmyadmin에서 보았습니다. 그것의 빈 .. (나는 그것에 쿼리를 시도 ...하지만 그게 정말 비어 있습니다 ..) –

1

두 번째 코드는 모든 열을 AES_ENCRYPT의 반환 값을 할당하지 않습니다, 따라서 귀하의 UPDATE 구문이 올바르지 않습니다. http://dev.mysql.com/doc/refman/5.1/en/update.html을 참조하십시오.

이 될 것에서 "정보"라는 이름의 컬럼에 UPDATE 문을 암호화 된 데이터를 저장하려면 ... 정보 = AES_ENCRYPT (...

냈다 세 번째 코드가 유효하지 않은 당신 때문에 ' PHP에서 AES_ENCRYPT라는 기능을 평가하기 위해 노력하고. 대부분의 경우 귀하의 PHP 환경에서 이러한 기능이 없기 때문에 PHP 인터프리터는 오류가 발생하면서 중지됩니다.

0
`$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 클라이언트 측이 아니라 서버에서 지원.

관련 문제