
15.06.2009, 00:54
|
|
Познавший АНТИЧАТ
Регистрация: 10.06.2006
Сообщений: 1,113
С нами:
10483586
Репутация:
5826
|
|
128 запросов на мд5 хеш бинарным поиском (или 4 для 0...15 и 8 для 0...255)
128 запросов на мд5 хеш бинарным поиском (или 4 для 0...15 и 8 для 0...255)
ЮЮЮЮПППППИИИ, занимался переписыванием и оптимизацией своего скрипта для работы со слепыми инъекциями.
Оптимизировал функцию поиска....
Подняв планку для бинарного поиска - теперь не до 160-170 запросов на мд5 хеш нужно, а ровно 128.
Т.е. для мд5 это ровно 4 запроса на 1 символ. Пример функции:
PHP код:
<?php
function grey_f3($i) {
$min = 0; $max = 16; $srd = 8;
for($j = 0; $j < 3; $j++) {
if($i >= $srd) {
$min = $srd;
$srd = ($srd + $max) / 2;
} else {
$max = $srd;
$srd = ($srd + $min) / 2;
}
echo('1');
}
if($i == $min) { $srd = $min; }
echo('1 ');
return $srd; }
for($i = 0; $i < 16; $i++) { echo(grey_f3($i).'<br>');}
?>
А для обычного диапазона 0...255 - 8 запросов на 1 символ:
PHP код:
<?php
function grey_f3($i) {
$min = 0; $max = 256; $srd = 128;
for($j = 0; $j < 7; $j++) {
if($i >= $srd) {
$min = $srd;
$srd = ($srd + $max) / 2;
} else {
$max = $srd;
$srd = ($srd + $min) / 2;
}
echo('1');
}
if($i == $min) { $srd = $min; }
echo('1 ');
return $srd; }
for($i = 0; $i < 255; $i++) { echo(grey_f3($i).'<br>');}
?>
Фишка в том, что если запихнуть все проверки в цикл, то нельзя учесть в самом конце, что искомый символ может быть больше или равен минимальной границе, но строго меньше максимальной.
В последнем запросе проверка идёт уже относительно границы, а не среднего значения.
Последний раз редактировалось Grey; 15.06.2009 в 01:03..
|
|
|