Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.03.2017, 11:46   #1
brownb
Форумчанин
 
Регистрация: 16.10.2016
Сообщений: 157
По умолчанию генератор пароля без повторения

Код:
function RandomPassword(PLen: Integer): string;
 var
   str: string;
 begin
   Randomize;
   //string with all possible chars
  str    := '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ';
   Result := '';
   repeat
     Result := Result + str[Random(Length(str)) + 1];
   until (Length(Result) = PLen)
 end;
procedure TForm1.Button1Click(Sender: TObject);
begin
memo1.Lines.add('22'+RandomPassword(11));
Нужно сгенерировать все возможные варианты(без повтора) с 11 символами(цыфры и англ буквы в верхнем регистре) которые начинаются с двух цифр.То есть
22C0F49DD3F63
22C0F49DD2WE1
22...
22...
Пробую вот так,работает но вот как быть с повторами?

Последний раз редактировалось brownb; 09.03.2017 в 11:55.
brownb вне форума Ответить с цитированием
Старый 09.03.2017, 12:06   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Нужно сгенерировать все возможные варианты(без повтора) с 11 символами(цыфры и англ буквы в верхнем регистре)
Ну пусть первые 2 фиксированы. Что будешь делать с почти тремя триллионами возможных ключей в такой постановке?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 09.03.2017, 12:08   #3
brownb
Форумчанин
 
Регистрация: 16.10.2016
Сообщений: 157
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Ну пусть первые 2 фиксированы. Что будешь делать с почти тремя триллионами возможных ключей в такой постановке?
Чтонибудь придумаю)Помойму даже 3 фиксированные т.е 10 символов
brownb вне форума Ответить с цитированием
Старый 09.03.2017, 12:23   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
т но вот как быть с повторами?
1. проверять, уже сгенерированные и добавлять только нужные(новые).
Код:
s:=RandomPass;
if memo.lines.indexof(s)<0 then memo.lines.add(s);
P.S. к использованию Memo
смотреть 2 трлн. строк б-р-р...
да и работать с таким объемом будет медленно.
лучше хранить в TStringList. Возможности все те же.
и даже больше смотри свойства Duplicate Sort Sorted.

2. если нужны ВСЕ, то лучше и генерировать их по порядку а не случайным путем.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 09.03.2017 в 12:30.
evg_m вне форума Ответить с цитированием
Старый 09.03.2017, 12:28   #5
brownb
Форумчанин
 
Регистрация: 16.10.2016
Сообщений: 157
По умолчанию

А можно пример по порядку?И как подсчитать количество вариантов и сколько это займет ГБ?)
brownb вне форума Ответить с цитированием
Старый 09.03.2017, 12:47   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
А можно пример по порядку?
http://www.programmersforum.ru/showt...F0%E5%E1%EE%F0

Цитата:
и сколько это займет ГБ?)
= (мощность алфавита =26+10) ** (количество знаков в последовательности =11(или 10) ) * (количество байт в ЗАПИСИ последовательности =10) / (размер ГБ в байтах =10 **9 (1 000 000 000 ) )
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод массива из б.д. без повторения dee3000 PHP 0 25.07.2015 16:58
Генератор пароля на C++ Prim@ C++ Builder 6 21.04.2014 08:17
SSH без пароля AlexandЯ Linux (Ubuntu, Debian, Red Hat, CentOS, Mint) 0 28.05.2013 11:04
Рандомизационное получение координат массива без повторения. Alex Cones Общие вопросы Delphi 4 08.06.2009 17:38