заносим данные в БД Код (Text): UPDATE `sf_comments` SET `author` = AES_ENCRYPT('1asdfres8ded', '12345') WHERE `id`=2 достаем Код (Text): SELECT AES_DECRYPT(`author`, '12345') FROM `sf_comments` WHERE `id` = 2 всегда возвращает NULL второй час бъюсь, толку ноль заранее благодарен!
пробовал и blob и tynitext - результат тот же.... пока решил использовать ENCODE и DECODE, работает, но все же интересно почему AES_DECRYPT не пашет....
С blob у меня все отлично Вариант конечно не лучший, но если не критично то тоже вариант =) собственно почему: Код (Text): SELECT BENCHMARK( 1000000, AES_ENCRYPT( "password", "password" ) ) Showing rows 0 - 0 (1 total, Query took 0.2862 sec) SELECT BENCHMARK( 1000000, ENCODE( "password", "password" ) ) Showing rows 0 - 0 (1 total, Query took 0.5336 sec)
в первом посте я привел код, там везде 12345, может с синтаксисом чего, но я все вроде перепробовал, кавычки, двойные одинарные, без кавычек... бестолку (
не, я привел запросы, которые прям в phpmyadmin выполнял..... Добавлено спустя 14 минут 4 секунды: господа, а приведите тут свои запросы с AES_ENCRYPT и AES_DECRYPT, пожалуйста
В базе данных можно хранить особо важный данные и в закрытом зашифрованном виде. Например, при помощи функций DES_ENCRYPT и DES_DESCRYPT. В этом случае данные шифруются при помощи алгоритма Triple-DES. Правда, для работы с этими функциями MySQL должен быть собранным с поддержкой SSL может тут беда? как проверить?
на закладке "состояние" в муадмине есть раздел про ssl а, кстати, попробуй выполнить код из пхп, без админа, у меня на стартовой предупреждение
Мне кажется, это какие-то настройки. Я работал с AES-шифрованием на рабочем сервере (ну там законы все эти о хранении пользовательских данных в тайне). В зашифрованном виде хранили номера телефонов, почты, имена-фамилии. Но сейчас вот пробую у себя на локалхосте и не понимаю, в чём проблема, однако не пашет. Вот прямо беру код из готового рабочего проекта, создаю нужные таблицы - и не пашет, хотя на боевом сервере работало...
короче денвер фтопку получается??? офф земляк, ты где в Дмитровском районе обитаешь? я там вырос, мать там живет, и дача в 15 км от икши...
г.Дмитров, ул. Ольховая, уч. 21. Короче, это район "старый фрезерный", там сейчас частные дома. У меня тут участок, 20 соток примерно. Дом всё никак не дострою. Денег нада побольше получать А так участок хорош - все коммунальные услуги - свет, вода, газ, канализация... Как в квартире, только свой дом. Но блин, пока в строительном вагончике обитаю. Дом вот стоит рядом, но пока не живой, холодный... На крыше просто рубероид лежит от дождя.
Как говорил Сидорович из сталкера "а по твоей теме нарыл кое-что"... Если использовать не TEXT, а BLOB - то у меня чудесным образом всё заработало. Вот скрипт: Код (PHP): <?php /* aes.php Тестирование работоспособности MySQL-функций AES_ENCRYPT() и AES_DECRYPT() */ // Параметры соединения с б.д. $dbhost = 'localhost'; $dbuser = 'root'; $dbpass = '123'; $dbname = 'test'; // Соединение $db = mysql_connect($dbhost, $dbuser, $dbpass) or exit('MySQL connect error'); mysql_select_db($dbname, $db) or exit('MySQL select db error'); mysql_query('SET NAMES utf8', $db) or exit('MySQL set names query error'); // Пытаемся вставить запись $code = '12345'; $sql = "INSERT INTO `posts` (`post_date`, `post_reads`, `post_text`) VALUES (NOW(), 123, AES_ENCRYPT('Some text', '{$code}'))"; mysql_query($sql, $db) or exit('MySQL error:<br />' . $sql . '<br />' . mysql_error($db)); $sql = "SELECT `post_id`, `post_date`, `post_reads`, AES_DECRYPT(`post_text`, '{$code}') AS `post_text` FROM `posts` ORDER BY `post_id` ASC"; $res = mysql_query($sql, $db) or exit('MySQL error:<br />' . $sql . '<br />' . mysql_error($db)); if(mysql_num_rows($res) > 0) { while($row = mysql_fetch_assoc($res)) echo($row['post_id'] . ' | ' . $row['post_date'] . ' | ' . $row['post_reads'] . ' | ' . $row['post_text'] . '<br />'); } mysql_close($db); ?> Вот создание таблицы: Код (Text): CREATE TABLE `posts` ( `post_id` int(11) NOT NULL AUTO_INCREMENT, `post_date` date DEFAULT NULL, `post_reads` int(11) NOT NULL DEFAULT '0', `post_text` blob, PRIMARY KEY (`post_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
в мане вот такая инфа mysql> SHOW VARIABLES LIKE 'have_ssl'; +---------------------+-------+ | Variable_name | Value | +---------------------+-------+ | have_ssl | YES | +---------------+-------+ If the value is YES, the server supports SSL connections. If the value is DISABLED, the server supports SSL connections but was not started with the appropriate --ssl-xxx options (described later in this section). If the value is YES, the server supports SSL connections. у меня DISABLED, и все работает
have_ssl DISABLED аналогично.... sobachnik выполнил код выше, получил: 1 | 2012-03-01 | 123 | Some text стало быть работает...но вся разница только AES_ENCRYPT('Some text', '{$code}') в скобках.....или нет?
Новые чудеса.... ENCODE и DECODE на денвере все работает, перенесли на сервер, нихрена в базе не пишет... запрос: Код (Text): INSERT INTO `table` (text) VALUES ( ENCODE('aaaaa', 3), ) получаем: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '3) такой же запрос на денвере - все нормально, все записывает в БД....
Код (Text): INSERT INTO `table` (text) VALUES ( ENCODE('aaaaa', 3), <----- запятая =) ) И да, если мне не изменяет память, то второй параметр стрингом должен быть.