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

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..