|
|
|
| Ответ 014 на задачу N 4.
С условиями задачи можно ознакомится по ссылке.
ee11cbb19052e40b07aac0ca060c23ee - user
dd97813dd40be87559aaefed642c3fbb - igor
8dbc672497bdc46f88e864bb1121232c - lena
3e10f8c809242d3a0f94c18e7addb866 - atom
на моем 4 пентиуме подбирались около минуты(можно запрофилировать)
<?php
//переопределяем стандартное время выполнение скриптов
set_time_limit(0);
//пишем свою функцию
требует:
мах кол-во знаков сам хеш и строку для сложения
function md5_hack($num,$hash,$str)
{
//символы из которых состоит исходная строка
$simvols=array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z");
foreach($simvols as $value)
{
//формирование строки для брута
$cur=$value.$str;
//условия выхода(найдено значение)
if(md5($cur)==$hash)
{
//вывод
echo(md5($cur)." - ".$cur."<br>");
break;
}
//выход из функции
if(strlen($cur)==$num+1)break;
//рекурсивный вызов
md5_hack($num,$hash,$cur);
}
}
//непосредственно сам взлом
md5_hack(4,"ee11cbb19052e40b07aac0ca060c23ee","");
md5_hack(4,"dd97813dd40be87559aaefed642c3fbb","");
md5_hack(4,"8dbc672497bdc46f88e864bb1121232c","");
md5_hack(4,"3e10f8c809242d3a0f94c18e7addb866","");
?>
|
http://www.softtime.ru/info/task.php?id_article=74 | |
|
|
|
|
|
|
|
для: SoftTime
(08.02.2006 в 17:10)
| | Используется функция set_time_limit(0) - это хорошо, диапазон символов также легко расширяем, используется рекурсивный спуск. Однако скрипт достаточно долго выполняется - всех дольше пожалуй. | |
|
|
|
|
|
|
|
для: cheops
(09.02.2006 в 00:16)
| | зато коротко и читабельно | |
|
|
|
|
|
|
|
для: udaf
(09.02.2006 в 02:19)
| | Да компактность и читабельность на высоте, а это очень важно - ведь ответы на задачи предполагают, что код будет читать не только автор. Тот кто об этом задумывается об этом здесь, не забудет и в реальном проекте. | |
|
|
|
|
|
|
|
для: SoftTime
(08.02.2006 в 17:10)
| | Выход по break плохая практика, тем более в рекурсивной функции. С другой стороны код минимален. | |
|
|
|