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

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

 

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

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

тема: Ответ 013 на задачу N 5
 
 автор: SoftTime   (12.02.2006 в 20:10)   письмо автору
 
 

Ответ 013 на задачу N 5.
С условиями задачи можно ознакомится по ссылке.
<?php
//на моем четвертом пне вычислились за 2 секунды
//06b2d4b91b5c9eaa8c20a1c270f95b3c is cluster hacked in 0.418817043304sec
//e206a54e97690cce50cc872dd70ee896 is linux hacked in 1.18141508102sec
//fbfa6902f089e5a0fa2424bd460ecfd0 is lisbon hacked in 1.1824901104sec
//437233c74e25fe505293cd2e8ecc2696 is pyramid hacked in 1.49968719482sec
//fb28e9240e83a5264566de844cc45523 is subprogram hacked in 1.72424507141sec
//профилирование начало
$start=(microtime(1));
//добавить профилирование
//массив с хешами
$hashes=array(    "fb28e9240e83a5264566de844cc45523"
                
"437233c74e25fe505293cd2e8ecc2696"
                
"06b2d4b91b5c9eaa8c20a1c270f95b3c"
                
"e206a54e97690cce50cc872dd70ee896"
                
"fbfa6902f089e5a0fa2424bd460ecfd0" );
//количество элементов в массиве
$count_hashes=count($hashes);
//открыть файл со словарем почему-то у меня в системе suse linux 9.2
// он назывался не linux.words а words но по моему это не важно так как слова нашлись
$word_list=fopen("words","r");
//пускаем цикл пока не достигнем конца файла с паролями
while(!feof($word_list))
{
    
//читаем строку(слово и преобразуем в нижний регистр так как
    //известно из условия что все буквы маленькие) и удаляем
    //пробелы
    
$word=trim(strtolower(fgets($word_list)));
    
//цикл для проверки хэшей
    
foreach ($hashes as $value)
    {
        
//если вычичленный хеш равен искомому хешу
        
if(md5($word)==$value)
        {
            
//профилирование расчета каждого хеша
            
$end=microtime(1);
            
$time=$end-$start;
            
//выводим значение
            
echo($value." is ".$word." hacked in ".$time."sec<br>");
            
//ишем номер эеиента массива
            
$num_in_array=array_search($value$hashes);
            
//удаляем элемент из массива
            
array_splice($hashes$count_hashes+1$num_in_array+1);
            
//вычитаем из количества элементов
            
$count_hashes--;
            
//если в массиве осталось 0 элементов, то выходим из цикла
            
if($count_hashes==0)break;
        }
        
    }
    
//выходим и из этого цикла если все найдено
    
if($count_hashes==0)break;
}
//закрываем файл
fclose($word_list);
?>


http://www.softtime.ru/info/task.php?id_article=75

   
 
 автор: cheops   (13.02.2006 в 00:51)   письмо автору
 
   для: SoftTime   (12.02.2006 в 20:10)
 

Имеется досрочный выход при нахождении всех паролей, однако хэши для каждого слова вычисляются по несколько раз.

   
 
 автор: udaf   (13.02.2006 в 01:00)   письмо автору
 
   для: cheops   (13.02.2006 в 00:51)
 

я об этом думал, но уже после того как отослал решение

   
Rambler's Top100
вверх

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