Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

Купить рекламу на форуме 15-35 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2011, 18:07   #1
Екатерина5
Новичок
Джуниор
 
Регистрация: 26.01.2011
Сообщений: 2
Смех Разработка программы разграничения полномочий пользователей на основе парольной аутентификации

Программа запрашивает в окне входа пароль и его имя. Пароль должен состоять из чередования букв, цифр и снова букв.

Как написать в Делфи, чтобы чередовались буквы, цифры и снова цифры?
Екатерина5 вне форума Ответить с цитированием
Старый 13.11.2011, 18:35   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,855
По умолчанию

Код:
pwd := '';
for i := 0 to random(6) do // до 5 раз
  pwd := pwd+ ord(random(26)+65); // запишем случ загл англ букву
for i := 0 to random(6) do // до 5 раз
  pwd := pwd+ ord(random(10)+48); // запишем цифру
for i := 0 to random(6) do // см. выше
  pwd := pwd+ ord(random(26)+65); //
после исполнения сего кода (поместить в процедуру или функцию по соотв. правилам) в переменной pwd будет искомый пароль
phomm вне форума Ответить с цитированием
Старый 21.11.2011, 16:18   #3
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

вот, писал когда-то такой генератор (код выдернут из программы, но его можно адаптировать в независимый метод):
Код:
procedure TFGenerator.btn_generatekeyClick(Sender: TObject);
const
  cntGenNum:array[0..42] of Byte=//массив чисел и знаков
    (33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,
     57,58,59,60,61,62,63,64,91,92,93,94,95,96,123,124,125,126,185);
  cntGenEng:array[0..51] of Byte=//массив английских символов
    (65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,
     89,90,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,
     114,115,116,117,118,119,120,121,122);
  cntGenRus:array[0..65] of Byte=//массив русских символов
    (168,184,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
     208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,
     226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,
     244,245,246,247,248,249,250,251,252,253,254,255);
   cntGenSys:array[0..93] of Byte=//массив ситемных символов
    (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,
     27,28,29,30,31,32,127,128,129,130,131,132,133,134,135,136,137,138,139,
     140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,
     158,159,160,161,162,163,164,165,166,167,169,170,171,172,173,174,175,176,
     177,178,179,180,181,182,183,186,187,188,189,190,191);
var
  i,bt:Byte;//счетчик, случайный байт
  LTempKey:AnsiString;//временный ключ для заполнения LkeyData
  LKeyData:TStringList;//предключевая последовательность для генерации ключа

  function UniqueByte:Boolean;
  var
    j:Byte;//счетчик
  begin
    Result:=True;
    for j:=1 to Length(LTempKey) do
      if AnsiChar(bt)=AnsiChar(LTempKey[j]) then
      begin
        Result:=False;
        Break;
      end;
  end;
begin
  LKeyData:=TStringList.Create;//создаем предключевую последовательность
  LKeyData.LineBreak:=#0;
  SetLength(LTempKey,gKeyMaxLength);
  Randomize;//перегружаем рандомизатор

  //если флаг цифр и знаков активен, то
  if cb_go_num.Checked then
  begin
    LTempKey[1]:=AnsiChar(cntGenNum[Random(43)]);//присвоили 1й символ
    for i:=2 to gKeyMaxLength do
    begin
      bt:=cntGenNum[Random(43)];
      while not UniqueByte do
        bt:=cntGenNum[Random(43)];
      LTempKey[i]:=AnsiChar(bt);
    end;
    LKeyData.Add(LTempKey);
  end;

  //если флаг английских символов активен, то
  if cb_go_eng.Checked then
  begin
    LTempKey[1]:=AnsiChar(cntGenEng[Random(52)]);//присвоили 1й символ
    for i:=2 to gKeyMaxLength do
    begin
      bt:=cntGenEng[Random(52)];
      while not UniqueByte do
        bt:=cntGenEng[Random(52)];
      LTempKey[i]:=AnsiChar(bt);
    end;
    LKeyData.Add(LTempKey);
  end;

  //если флаг русских символов активен, то
  if cb_go_rus.Checked then
  begin
    LTempKey[1]:=AnsiChar(cntGenRus[Random(66)]);//присвоили 1й символ
    for i:=2 to gKeyMaxLength do
    begin
      bt:=cntGenRus[Random(66)];
      while not UniqueByte do
        bt:=cntGenRus[Random(66)];
      LTempKey[i]:=AnsiChar(bt);
    end;
    LKeyData.Add(LTempKey);
  end;

  //если флаг системных символов активен, то
  if cb_go_sys.Checked then
  begin
    LTempKey[1]:=AnsiChar(cntGenSys[Random(94)]);//присвоили 1й символ
    for i:=2 to gKeyMaxLength do
    begin
      bt:=cntGenSys[Random(94)];
      while not UniqueByte do
        bt:=cntGenSys[Random(94)];
      LTempKey[i]:=AnsiChar(bt);
    end;
    LKeyData.Add(LTempKey);
  end;

  //генерация ключа из предключевой последовательности
  bt:=LKeyData.Count;
  SetLength(LTempKey,0);
  LTempKey:='';
  for i:=1 to gKeyMaxLength do
    LTempKey:=LTempKey+LKeyData[Random(bt)][i];
  LKeyData.Free;//уничтожаем предключевую последовательность
  le_genkey.Text:=LTempKey;//присваиваем сгенерированный ключ
end;
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как организовать систему полномочий на сайте. Гламурная птица Помощь студентам 4 15.11.2011 10:31
Альтернатывные пути создания интерфейса программы на основе MFC Fog Visual C++ 5 01.08.2011 14:16
ООП Delphi разработка классов для реализации контейнера на основе структуры"упорядоченный динамический список" naffy Помощь студентам 0 27.06.2011 23:22
IdSMTP - проблема аутентификации iskurt Работа с сетью в Delphi 1 06.10.2009 22:04
Страница аутентификации. Soldier PHP 21 06.01.2009 21:02

Реклама для незарегистрированных, регистрация на форуме