|
|
|
| Объяснмте пожалуйста в чем прикол. Вобщем надо зашифровать с помощью функции mcrypt_encrypt() строку и положить ее в БД mySQL. все бы ничего,но некоторые отдельные слова шифроваться шифруються но в базу не кладуться.просто не срабатывает функция mysql_query!! Например такие как admin, password или 100(!) 10 нормально, 1000 нормально а 100!!!!! ну это уже никак понять не могу!
шифрую значит так:
<?
$iv = mcrypt_create_iv (mcrypt_get_iv_size (MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND);
$return = mcrypt_encrypt (MCRYPT_RIJNDAEL_256, $ckey, $str, MCRYPT_MODE_ECB, $iv);
// $ckey -ключ к шифрованию
// $str - непосредственно сама строка.
// и потом в БД через mysql_query ("INSERT INTO ........ VALUES ......... ")
?>
|
может mycrypt символы недопустимые создает, из-за которых функции mySQL глохнут? Главное что последующий код выполняеться без проблем, а функций БД будто и нет. ни ошибок ни черта!
как это так?? | |
|
|
|
|
|
|
|
для: localGhost
(21.06.2005 в 12:08)
| | напиши
echo $return;
и проследи что выдаеться тебе при шифровании разных слов | |
|
|
|
|
|
|
|
для: localGhost
(21.06.2005 в 12:08)
| | А вы переде занесением их в базу данных пропускаете через функцию mysql_escape_string()?
<?php
$return = mysql_escape_string($return);
?>
|
Кроме того, вы можете шифровать данные при помощи встренных функций MySQL, получится даже быстрее
AES_ENCRYPT(str,key_str)
AES_DECRYPT(crypt_str,key_str)
|
| |
|
|
|
|
|
|
|
для: cheops
(21.06.2005 в 12:23)
| | а как запрос построить для дешифрования и чтения данных. Зашифровать получилось а обратно все голову ломаю над SQL запросом. помогите пожалуйста.
и еще: ключ я записал следующим образом:
<?
mysql_query ("SELECT @key:='$acckey'")
mysql_query ("INSERT INTO 'table' ('cell') VALUES (AES_ENCRYPT('string', @key))");
?>
|
значение @key будет же видно до mysql_close(); т.е. до завершения обработки страницы. верно? | |
|
|
|
|
|
|
|
для: localGhost
(21.06.2005 в 15:26)
| | >значение @key будет же видно до mysql_close(); т.е. до
>завершения обработки страницы. верно?
да | |
|
|
|
|
|
|
|
для: cheops
(21.06.2005 в 12:23)
| |
AES_ENCRYPT(str,key_str) - шифрование
AES_DECRYPT(crypt_str,key_str) - дешифрование
|
| |
|
|
|
|
|
|
|
для: P@Sol
(21.06.2005 в 15:31)
| | да нет, это понятно все..... как правильно SELECT запрос составить на дешифрование?
я сделал так, но не работает, наверно неправильно:ъ
<?
$result = "SELECT AES_DECRYPT('user', @key), AES_DECRYPT('pass', @key), AES_DECRYPT('level', @key) FROM table WHERE id = 'str'";
mysql_fetch_array (mysql_query ($result));
?>
|
получил вот это:
Array
(
[0] =>
[AES_DECRYPT(user', @key)] =>
[1] =>
[AES_DECRYPT('pass', @key)] =>
[2] =>
[AES_DECRYPT('level', @key)] =>
)
|
как видите везде пусто | |
|
|
|
|
|
|
|
|
для: P@Sol
(21.06.2005 в 15:52)
| | блин, это я уже проштудировал.... там естт пример шифрования, но нету дешифрования.. вопрос остается открытым. | |
|
|
|
|
|
|
|
для: localGhost
(21.06.2005 в 15:38)
| | А у вас переменная @key жива? запрос
что даёт? попробуйте пока просто подставить значение из переменной $acckey
<?
$result = "SELECT AES_DECRYPT('user', '$acckey'), AES_DECRYPT('pass', '$acckey'), AES_DECRYPT('level', '$acckey') FROM table WHERE id = 'str'";
mysql_fetch_array (mysql_query ($result));
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(21.06.2005 в 18:36)
| | кстати, а какой должен тип у ячейки? пока у меня стоит TEXT. Или это не имеет значения? | |
|
|
|
|
|
|
|
для: localGhost
(22.06.2005 в 04:32)
| | а говоришь проштудировал:)
If you want to store results from an encryption function that might contain arbitrary byte values, use a BLOB column rather than a CHAR or VARCHAR column to avoid potential problems with trailing space removal that would change data values.
(c) MySQL | |
|
|
|
|
|
|
|
для: P@Sol
(22.06.2005 в 08:58)
| | хммм.. понятно.. может в этом и проблема.. | |
|
|
|
|
|
|
|
для: localGhost
(22.06.2005 в 04:32)
| | В принципе можно TEXT, но лучше если это действительно будет BLOB, чтобы не побить зашифрованные данные кодировкой. | |
|
|
|