Показать сообщение отдельно

128 запросов на мд5 хеш бинарным поиском (или 4 для 0...15 и 8 для 0...255)
  #8  
Старый 15.06.2009, 00:54
Grey
Познавший АНТИЧАТ
Регистрация: 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..