![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Генератор списков паролей [D2005, XP]
Ruffian © (2007-08-01 20:26:00)Здравствуйте уважаемые программисты..
Проблема собственно вот в чём:
Пишу программу для генерации списков паролей, алгаритм такой
с каждым символом подставляется каждый итд..
тоесть для трёх-символьной генерации использую следушее:
begin
xyz:=TstringList.create; //xyz типа TStrings
for a:=1 to 161 do //Цифра 161 взята из максимального количества //символов в русской и английской раскладках
begin
for b:=1 to 161 do
begin
for c:=1 to 161 do
xyz.Add(mas[a]+mas[b]+mas[c]);//собственно в mas[1]-mas[161]хранятся //все символы
end;
end;
If OpenTextFileDialog1.Execute then //
xyz.SaveToFile(OpenTextFileDialog1.FileName); //сохранение
xyz.free; //
end;
С 3-значной длиной всё в порядке, генерация происходит за несколько секунд и успешно сейвится, а вот с 4-значной наступает проблема - поскольку объём строк очень большой, происходит переполнение стека..
Есть идея сделать поэтапное сохранение после каждого прохода (тоесть на каждой 1/161)..
Прошу высказат ьваш взгляд на вышеизложенное.
(Прошу прощенье если где-то напутал)
Заранее спасибо!
DrPass (2007-08-01 22:27:00) [1]
> (вернее как, с помощью чего лучше общаться с файлами?)
assignfile, rewrite, writeln, closefile
> Поэтому и нужен генератор 8), будет генерить по частям..
А смысл? Можно подумать, существует компутер, способный обработать все варианты паролей из 8 символов, хоть по частям, хоть сразу.
Ruffian (2007-08-01 21:14:00) [2]
> сделай просто добавление строки в файл на каждой итерации
> цикла. Будет намного быстрее и при этом с ничтожным потреблением
> памяти
Сори, не понял, куда добавлять сроку? (вернее как, с помощью чего лучше общаться с файлами?)
> А у тебя диска то хватит - это 3 611 577 970 071 152 648
> байт для паролей из 8 символов
Поэтому и нужен генератор 8), будет генерить по частям..
Anatoly Podgoretsky (2007-08-01 21:09:00) [3]А у тебя диска то хватит - это 3 611 577 970 071 152 648 байт для паролей из 8 символов
DrPass (2007-08-01 20:39:00) [4]Вместо этого
> xyz:=TstringList.create;
> xyz.Add(mas[a]+mas[b]+mas[c]);
> xyz.SaveToFile(OpenTextFileDialog1.FileName); //сохранение
> xyz.free;
сделай просто добавление строки в файл на каждой итерации цикла. Будет намного быстрее и при этом с ничтожным потреблением памяти