Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.02.11;
Скачать: [xml.tar.bz2];

Вниз

Помогите оптимизировать.   Найти похожие ветки 

 
optimizer   (2007-01-21 19:01) [0]

Удалено модератором
Примечание: Использование разных ников в пределах одной ветки


 
transp   (2007-01-21 19:02) [1]

type
TBaseType = Int64; // либо Longint, но его не хватает

TPassGen = class
  ...
  FBaseLen: ShortInt;
  FCurPass: String; // есть вариант с array of Char, но скорость не меняется
  FPassBase: String;
end;

{ генерация пароля. входные параметры - Unique - некое число, которое снаружи увеличивается всегда на 1, за счет чего и генерирую пасс, PassLen - длина пароля, контролируется снаружи }
procedure TPassGen.CreatePassword(Unique: TBaseType; PassLen: Integer);
var
vMod: ShortInt;
i: Integer;
begin
i := 1;
repeat
  // FBaseLen - длина словаря
  vMod := Unique mod FBaseLen + 1;
  // FCurPass - результат, FPassBase - словарь
  FCurPass[i] := FPassBase[vMod];
  Unique := Unique div FBaseLen;
  i := i + 1;
until i > PassLen;
end;


простите за кривой пост. забыл какие тэги тут.


 
tesseract ©   (2007-01-21 19:05) [2]

> TBaseType = Int64; // либо Longint, но его не хватает


Жесть, int64 крайне медленный, у тебя словарь больше 2 ^32 ?


 
optimizer   (2007-01-21 19:10) [3]

словарь (под словарем имеется в виду не файл, а алфавит по сути) у мну не большой, тестирую на 26 (латиница, верхний регистр). проблем в том что на Longint"e скорость 2.1 как раз и дает. на Int64 немного меньше (порядка 1.6-1.7 млн пар/сек)

Longint"a не хватает не из-за словаря по большей части, а из-за инкрементации Unique.


 
Kolan ©   (2007-01-21 19:14) [4]

«Longint"a »

Нафик он нужен? Читай справку про Integer.


 
optimizer   (2007-01-21 19:15) [5]

у мну D7. Longint = Integer. RTFM.


 
Kolan ©   (2007-01-21 19:19) [6]

«[5] optimizer   (21.01.07 19:15)
у мну D7. Longint = Integer. RTFM.»

Вот и я о том же.
Написано же: «Используйте везде&#133»


 
tesseract ©   (2007-01-21 19:22) [7]

а FCurPass[i] := random(62) - тут все возможные комбинации латиницы, чем не устраивает?


 
optimizer   (2007-01-21 19:23) [8]

согласитесь, что на оптимизацию не катит?...
а longint ничем не отличается от integer"a, имхо.

плз. давайте по теме.


 
tesseract ©   (2007-01-21 19:24) [9]

> а longint ничем не отличается от integer"a, имхо.

не отличается, если не используешь торицательных значений, то DWORD тебе в руки.


 
optimizer   (2007-01-21 19:34) [10]

tesseract
ну мы же взрослые люди. по поводу знака все ясно. тут не выиграть за счет смены BaseType. надо либо менять концепцию в корне, либо какой-нить любитель asm"а подскажет правильную идею...


 
tesseract ©   (2007-01-21 19:41) [11]

> надо либо менять концепцию в корне, либо какой-нить любитель
> asm"а подскажет правильную идею...


Используй, как все нормальные люди генератор случайных чисел. В delphi он имеет равномерное распределение.


 
Servelat ©   (2007-01-21 19:59) [12]

> снаружи нее лишь Unique := Unique + 1, и ...


А какие предубеждения мешают поместить все это вовнутрь процедуры? Как я понимаю уйдет лишний параметр Unique и не будет тучи лишних call. Тогда видимо, не нужно будет делать CreatePassword методом класса, а использовать, скажем, массив строк, в который и нагенерить паролей на здоровье. Хотя зачем генерировать 2.0 млн паролей / секунду я честно сказать не понимаю, возможно стоит лучше осветить задачу, тогда и варианты появятся.
А вообще - [11], нафик велосипеды.


 
optimizer   (2007-01-21 20:03) [13]

brute-force. рандом не поможет. ровно как и массив строк.

перенести тело CreatePassword внутрь обертки - без проблем. только за счет "навесов" что дает ООП ничего не поменяется толком.

генерацию надо ускорить хотя бы до 10 млн / сек.


 
tesseract ©   (2007-01-21 20:08) [14]

> brute-force. рандом не поможет. ровно как и массив строк.


Тогда вопрос - чео этот код вообще делает? На брутфорс по словарю, он не тянет никаким макаром.


 
optimizer   (2007-01-21 20:13) [15]

brute-force это конечная задача. необходим класс генерации пасса по условиям, который будет использован не только брутом, но и рядом других утилит.

этот код генерит пасс, как это ни странно )


 
tesseract ©   (2007-01-21 20:15) [16]

> необходим класс генерации пасса по условиям, который будет
> использован не только брутом, но и рядом других утилит.


Или словарь для брутфорса или random, остальное от лукавого.


 
optimizer   (2007-01-21 20:30) [17]

:) не согласен. маска, генерация по условию (выбор charset"ов, мин/мах длина, диапазоны, дистрибуция и прочее), словарь.


 
Servelat ©   (2007-01-21 20:32) [18]

Подбирать в несколько потоков.
Не вижу большого смысла использовать ООП - зачем эти обертки если нужна скорость. Работа со строкой всяко быстрее.
Как бы я подошел. Диапазон значений Unique известен - от 0 до BaseLen ^ PassLen. Делим диапазон на n частей, каждый поток перебирает свою часть диапазона.
В потоке же генерируем строку, проверяем взломалось/не взломалось, переходим к следующей. Никакие классы не нужны. Никакого вызова процедур в цикле не нужно.


> перенести тело CreatePassword внутрь обертки - без проблем.
> только за счет "навесов" что дает ООП ничего не поменяется
> толком.


Если есть цикл, и в этом цикле вызывается процедура, то данный вариант будет выполнятся медленнее, чем если бы код процедуры присутствовал напрямую в цикле. Как минимум на одну инструкцию call медленнее. Ваши аргументы, почему "ничего не поменяется" мне не понятны.


> Тогда вопрос - чео этот код вообще делает? На брутфорс по
> словарю, он не тянет никаким макаром.


Этот код, насколько я понимаю, генерирует словарь для брутфорса полным перебором.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2007.02.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.047 c
2-1169715505
ocean
2007-01-25 11:58
2007.02.11
Нет DBNavigator


3-1164112584
pavel_guzhanov
2006-11-21 15:36
2007.02.11
Как соединить DBGrid с IBQuery?


15-1169494394
Dmitry_177
2007-01-22 22:33
2007.02.11
не пойму что с жестким диском случилось, но данные пропали


3-1163697525
Kolan
2006-11-16 20:18
2007.02.11
Как сделать чтобы программа подключалась к БД?


2-1169543020
vigo_
2007-01-23 12:03
2007.02.11
Печать по-русски





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский