Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: вывод данных с BLOB поля
 
 автор: demka   (28.03.2008 в 14:20)   письмо автору
 
 

воспользовался этим кодом шифровки данных:


$key='key';
function crypt_xor($data, $key){ 
$datalen = strlen($data); 
$keylen = strlen($key); 
if($keylen == 0)return false; // Ключ пустой 
$xored = ''; 
for($i = 0; $i < $datalen; $i += $keylen)$xored .= substr($data, $i, $keylen) ^ $key; 
return $xored; 


function encrypt_xor($data, $key){ 
return crypt_xor(md5($data) . $data, $key); 


function decrypt_xor($data, $key){ 
if(false === $t = crypt_xor($data, $key)){return false;} // Ключ пустой 
$md5=substr($t, 0, 32); 
$unxored=substr($t, 32); 
if($md5 != md5($unxored)){echo 'ошибка';return false;} // Ключ не подходит или данные повреждены 
return $unxored; 
}


все работает прекрасно, но есть проблема с выводом данных с бд и расшифровкой их, делаю так:


$key='key'; 
$pass=encrypt_xor($_POST['pass'],$key); 

mysql_query("UPDATE `test` SET `pass`='$pass' WHERE nik='admin'"); 
$q=mysql_fetch_array(mysql_query("SELECT * FROM `test` WHERE `nik`='admin'")); 

echo $pass;//выводит кодированные данные 
echo $q['pass'];//выводит нормально также как и $pass 

decrypt_xor($pass,$key);//выводит нормально 
decrypt_xor($q['pass'],$key); //выдает ошибку.

   
 
 автор: demka   (28.03.2008 в 14:29)   письмо автору
 
   для: demka   (28.03.2008 в 14:20)
 

пробывал сравнить if ($pass!=$q['pass'])echo 'ошибка';//выводить ошибку. значит при записи или при доставании с бд происходит ошибка, но где?

   
 
 автор: Atheist   (28.03.2008 в 15:20)   письмо автору
 
   для: demka   (28.03.2008 в 14:29)
 

Ошибка есть как минимум тут:
> mysql_query("UPDATE `test` SET `pass`='$pass' WHERE nik='admin'");
Нужно эскейпировать спец. символы:
mysql_query("UPDATE `test` SET `pass`='" . mysql_escape_string($pass) . "' WHERE nik='admin'");

> echo $pass;//выводит кодированные данные
> echo $q['pass'];//выводит нормально также как и $pass
>
> decrypt_xor($pass,$key);//выводит нормально
> decrypt_xor($q['pass'],$key); //выдает ошибку.

Сделай var_dump($pass === $q['pass'], decrypt_xor($pass,$key) === decrypt_xor($q['pass'],$key));

> выдает ошибку
Какую?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования