|
|
|
| Ответ 005 на задачу N 4.
С условиями задачи можно ознакомится по ссылке.
<?php
$code=array(1 => "ee11cbb19052e40b07aac0ca060c23ee",
2 => "dd97813dd40be87559aaefed642c3fbb",
3 => "8dbc672497bdc46f88e864bb1121232c",
4 => "3e10f8c809242d3a0f94c18e7addb866");//Задан массив с хэшами.
$i="a"; //Даем стартовое значение для $i, чтоб было ясно, что оно - char.
$donecount=0; //Это - счетчик угаданных паролей. Пока что 0 ))
print "Began...<br />";
do{
$i++; //Увеличиваем $i.
$k=md5($i); //Это - проверочный хэш.
for ($t=1; $t<=4; $t++){ //Чтоб не крутить четыре раза цикл с подбором пароля,
//мы будем подбирать хэш к подобранному паролю,
//а не наоборот.
if($k===$code[$t]){ //И, если мы угадали, то:
print "пароль "$i", хэш "$code[$t]".<br />";//1)Пишем ответ,
$donecount++; //2)Запоминаем, что прравильно угаданных
//паролей стало на 1 больше.
}
}
}
while ($i!=="zzzz" and $donecount!==4); //"zzzz" - максимальное значение для $i из четырех символов.
//А если мы угадали 4 пароля - зачем крутить цикл дальше?
print "Done!";
//М. Голубев, aka DJ Paltus 19:54, 06.02.2006
?>
|
http://www.softtime.ru/info/task.php?id_article=74 | |
|
|
|
|
|
|
|
для: SoftTime
(06.02.2006 в 19:55)
| | Очень компактно, и понятно. Пароли перебираются в куче, отсутствуют вложенные циклы и очень всё быстро. Правда не очевидно как можно просто расширить диапазон символов. Очень понравилось, у меня решение более громоздкое и менее универсальное.
PS Ошибка опять моих рук дело, постарюсь исправить к следующей версии уже наверняка :))) | |
|
|
|
|
|
|
|
для: SoftTime
(06.02.2006 в 19:55)
| | Никакой универсальности, зато "дешево, надежно и практично" =) | |
|
|
|
|
|
|
|
для: Artem S.
(08.02.2006 в 23:53)
| | вы не заметили одной моей оплошности.
если пароль будет "а", то не подберется, так как значение $i сходу увеличивается до "b". | |
|
|
|
|
|
|
|
для: SoftTime
(06.02.2006 в 19:55)
| | Объясните мне почему if($k===$code[$t]) работает ощутимо быстрее чем if($k==$code[$t])?
В off line учебнике РНР ничего такого нет. | |
|
|
|
|
|
|
|
для: Necro
(09.02.2006 в 04:05)
| | PHP в случае === не выполняет приведение типов, а сравнивает значения как есть. | |
|
|
|