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

Форум PHP

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

 

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

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

тема: Подскажите как перевести текст в MD5 и обратно?
 
 автор: Елена Смирнова   (06.05.2008 в 18:29)   письмо автору
 
 

Мне нужно генерировать временную ссылку по номеру телефона, этот номер мне нужно зашифровать в одном скрипте в МД5, а в другом принять и расшифровать.

Может я ошибаюсь и мне нужно не МД5, а какойнить хеш или кеш?
Вообщем мне нужно выдовать ссылку типа: ?id=буквы_цифры(зашифрованый номер телефона)
Далее юзер переходит по ссылке и попадает на другой скрипт, который должен расшифровать "буквы_цифры(зашифрованый номер телефона)" и сверить результат в БД

   
 
 автор: Maya   (06.05.2008 в 19:13)   письмо автору
 
   для: Елена Смирнова   (06.05.2008 в 18:29)
 

md5 - необратимый алгоритм хеширования (ну, почти ;). Можно сравнивать только суммы.
В вашем случае можно передавать телефон методом POST и юзер его видеть не будет

   
 
 автор: LinUser   (06.05.2008 в 20:04)   письмо автору
 
   для: Maya   (06.05.2008 в 19:13)
 

md5 - совсем необратимый, однонаправленный. Само слово "хэширование" об этом говорит. Для кодирования можно разработать свой алгоритм, либо использовать функции кодирования по ключу, не помню названия)

   
 
 автор: Usta   (06.05.2008 в 21:04)   письмо автору
 
   для: LinUser   (06.05.2008 в 20:04)
 

Попробуйте вот это может вам подойдет! Это конечно только пример, но малоли пригодится!!
Только вам нужно создать БД в MYSQl telefon

<?php
  $dblocation 
"localhost";
  
$dbname "telefon";
  
$dbuser "root";
  
$dbpasswd "";
  
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
  if (!
$dbcnx)
  {
    echo( 
"<P>В настоящий момент сервер базы данных не доступен, поэтому корректное отображение страницы невозможно.</P>" );
    exit();
  }
  if (! @
mysql_select_db($dbname,$dbcnx) )
  {
    echo( 
"<P>В настоящий момент база данных не доступна, поэтому корректное отображение страницы невозможно.</P>" );
    exit();
  }
?>
<?php
$tel 
rand(0,9999999); // Номер телефона
$tel_md5 date('Ymd')."".rand(0,99999); // Ключ (не md5)
echo "<a href='index.php?id=".$tel_md5."'>Ссылка</a> ";
$query "INSERT INTO telef VALUES ('NULL', '$tel','$tel_md5')";
if(
mysql_query($query))
  {
    echo 
"Телефон добавлен!!!<br />";
  } else echo 
"Ошибка при добавлении телефона";
?>

<?php
if ( isset($_GET['id']) )
 {
 
$id intval($_GET['id']);
 
$ctg mysql_query("SELECT * FROM telef WHERE telmd5=$id");
 if (
$telef mysql_fetch_assoc($ctg))
    {
echo 
"Ваш телефон: ".$telef['tel'];
    }
}
?>

SQL!!!!!!!!

CREATE TABLE `telef` (
  `id` int(12) NOT NULL auto_increment,
  `tel` int(20) NOT NULL,
  `telmd5` bigint(50) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=57 ;

-- 
-- Дамп данных таблицы `telef`
-- 
INSERT INTO `telef` VALUES (1, 5686454, 2008050684109);
INSERT INTO `telef` VALUES (2, 1234567, 200805064046);

   
 
 автор: AcidTrash   (06.05.2008 в 21:52)   письмо автору
 
   для: Елена Смирнова   (06.05.2008 в 18:29)
 

А в бд у вас явный номер или хеш MD5?

   
 
 автор: Елена Смирнова   (06.05.2008 в 22:38)   письмо автору
 
   для: AcidTrash   (06.05.2008 в 21:52)
 

Номер, но думаю теперь его еще и в МД5 писать, а птом сверять... подскажите как перевести в МД5

   
 
 автор: AcidTrash   (06.05.2008 в 22:48)   письмо автору
 
   для: Елена Смирнова   (06.05.2008 в 22:38)
 

Ну какже когда user регистрируется, при принятии данных(телефона) записываете в БД хеш MD5 этих данных, а потом если user ввел номер телефона, хешируете его функцией
md5(номер телефона) и потом сравниваете с записями в БД.

   
 
 автор: Maya   (06.05.2008 в 22:49)   письмо автору
 
   для: Елена Смирнова   (06.05.2008 в 22:38)
 

string md5 (string str)

Если у вас есть "проверочная" база, то можно смело хешировать и сравнивать. Плюс можно добавить какой-нибудь ключ.

$Key="elenasmirnova";
$md5CheckSrc=$Tel.$Key;
$md5Check=md5($md5CheckSrc);
if(strcasecmp($md5Check,$md5ProverochnoeZnachenie == 0)) // проверочное хешируется так же
{
echo "Проверка пройдена";
}
else
{
echo "Проверка НЕ пройдена";
}

   
 
 автор: Usta   (06.05.2008 в 22:43)   письмо автору
 
   для: AcidTrash   (06.05.2008 в 21:52)
 

$tel = 7654321;
$tel_md5 = md5($tel);
echo $tel_md5;

   
 
 автор: Елена Смирнова   (06.05.2008 в 23:14)   письмо автору
 
   для: Usta   (06.05.2008 в 22:43)
 

Спасибо!

   
 
 автор: AcidTrash   (06.05.2008 в 23:31)   письмо автору
 
   для: Usta   (06.05.2008 в 22:43)
 

>$tel = 7654321;
>$tel_md5 = md5($tel);
>echo $tel_md5

Вопрос был не в хешировании, а в расхешировании, что в принципе невозможно.
А именно надо сравнивать хеши.

   
Rambler's Top100
вверх

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