Я пытаюсь создать временную атаку в php Используя php 7.1 со следующим script
<?php
$find = "hello";
$length = array_combine(range(1, 10), array_fill(1, 10, 0));
for ($i = 0; $i < 1000000; $i++) {
for ($j = 1; $j <= 10; $j++) {
$testValue = str_repeat('a', $j);
$start = microtime(true);
if ($find === $testValue) {
//do Nothing
}
$end = microtime(true);
$length[$j] += $end - $start;
}
}
arsort($length);
$length = key($length);
var_dump($length . " found");
$found = '';
$alphabet = array_combine(range('a', 'z'), array_fill(1, 26, 0));
for ($len = 0; $len < $length; $len++) {
$currentIteration = $alphabet;
$filler = str_repeat('a', $length - $len - 1);
for ($i = 0; $i < 1000000; $i++) {
foreach ($currentIteration as $letter => $time) {
$testValue = $found . $letter . $filler;
$start = microtime(true);
if ($find === $testValue) {
//do Nothing
}
$end = microtime(true);
$currentIteration[$letter] += $end - $start;
}
}
arsort($currentIteration);
$found .= key($currentIteration);
}
var_dump($found);
Это поиск слова со следующими ограничениями
Только a-z до 10 символов
script находит длину слова без проблем, но значение слова никогда не возвращается с ожиданием с временной атакой.
Есть ли что-то, что я делаю неправильно?
Провод script, но длины, правильная идентификация длины. он затем зацикляет каждую букву (az) и проверяет скорость на них. Теоретически "haaaa" должен быть немного медленнее, чем "aaaaa" из-за того, что первая буква ah, затем она продолжается для каждой из 5 букв.
Запуск дает что-то вроде "brhas", которое явно неверно (каждый раз каждый раз, но всегда неправильно)