У меня было задание создать md5-трек из четырехсимвольной строки, используя алгоритм грубой силы.Программа принимает хеш md5 в качестве входных данных и выводит четырехзначную строку, соответствующую хешу (отсюда можно ).
Ниже приведен мой исходный код PHP.(Построен поверх уже предоставленного образца)
<!DOCTYPE html>
Charles Severance MD5 Cracker
MD5 cracker
This application takes an MD5 hash of a four digit pin as string and attempts to hash all combinations to determine the original pin.
Debug Output:
<?php
$goodtext = "Not found";
// This is our alphabet
$txt = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ,./;'[]\\-=<>?:\"{}|_+`~!@#$%^&*()"; // all possible combinations
$show=100;
// If there is no parameter, this code is all skipped
if ( isset($_GET['md5']) ) {
$time_pre = microtime(true);
$md5 = $_GET['md5'];
$noOfchecks=0;
for($i=0; $i 0 )
{
print "$check $try\n";
$show = $show - 1;
}
}
}
}
}
// Compute elapsed time
$time_post = microtime(true);
print "Total Checks: ";
print $noOfchecks;
print "\n";
print "Elapsed time: ";
print $time_post-$time_pre;
print "\n";
}
?>
Оригинальный текст:
Crack MD5
Программа запускается с 0000, вычисляет ееХэш md5 и сравнивает его с предоставленным хешем, и если они равны, он завершает работу и возвращает строку из четырех символов, в противном случае переходит на 0001 и так далее (пока не будет пробована вся строка $ txt ).Кроме того, для отладки он выводит первые 100 строк, для которых он вычисляет хэш и сравнивает его с хешем пользовательского ввода.
Теперь, столкнувшись с проблемой, с которой я сталкиваюсь, когда я ввожу хэш 0000, т.е.
4a7d1ed414474e4033ac29ccb8653d9b
Он начинает вычисление с 0010
, как показано выше и достигает 0000 через 58 секунд.(что не должно произойти, так как сначала нужно вычислить для 0000 и немедленно вернуться).Точно так же, если я предоставлю хеш-значение
fc1198178c3594bfdda3ca2996eb65cb
, что для числа 0010, оно начинается с 0000 и достигает 0010 через 50 секунд (и пропускается)0010 в соответствии с последовательностью и возвращается к ней через 50 с.)
Начать в 0000 Сейчас 
Пропуск 0010 и переход к 0020 вместо

Почему моя программа меняет порядок вычислений на основе ввода , когда он четко определен в моей инициализации цикла, т.е. 0000.
Я использую XAMPP с MAX_EXECUTION_TIME = 100 в php.ini (чтобы избежать тайм-аутов).Браузер - Google Chrome.