|
|
|
| Ответ 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 | |
|
|
|
|
|
|
|
для: SoftTime
(12.02.2006 в 20:10)
| | Имеется досрочный выход при нахождении всех паролей, однако хэши для каждого слова вычисляются по несколько раз. | |
|
|
|
|
|
|
|
для: cheops
(13.02.2006 в 00:51)
| | я об этом думал, но уже после того как отослал решение | |
|
|
|