парольная аутентификация

Тема в разделе "Общие вопросы по С и С++", создана пользователем rossik, 3 май 2008.

  1. rossik

    rossik Гость

    Помогите, пожалуйста!Нужно разработать средства парольной аутентификации на Borland C++ Builder 6.0, а именно:задание максимального и минимального сроков действия пароля, ведение списка уже использованных паролей задаваемой максимальной длины. Есть ли какие-нибудь стандартные функции?Если нет, подскажите,с чего начать, чем пользоваться?
     
  2. kot_

    kot_ Гость

    Причем тут билдер?
    парольная аутендификация - где - в воздухе? Сама по себе?
    Свое апи в ОС, свое в других системах, например БД.
    В простейшем случае тебе надо определиться кчему ты будешь "аутендифицироваться" - и уже исходя из этого задавать вопрос.
     
  3. rossik

    rossik Гость

    У меня уже дана программка на С++. Пользователь запускает ее, появляется форма "Вход в систему", пользователь вводит логин и пароль (учетные записи храняться в отдельном файле там же). Есть меню, с помощью него можно вызвать форму "Смена пароля" и поменять пароль. Моя задача дополнить эту прогу дополнительными средствами аутентификации, про которые я писала выше...Предполагаю, надо искать в библиотеке time.h, но конкретные подходящие функции пока не нашла...
     
  4. SergKappa

    SergKappa New Member

    Регистрация:
    5 апр 2008
    Сообщения:
    4
    Симпатии:
    0
    Что значит "разработать средства парольной аутентификации на Borland C++ Builder 6.0, а именно:задание максимального и минимального сроков действия пароля, ведение списка уже использованных паролей задаваемой максимальной длины"?
    Аутентификация как раз осуществляется с помощью пароля!
    Как хранятся пароли? Если в базе данных - можно прикрутить дополнительные поля: дата начала действия пароля, дата окончания и проверять текущую дату.
     
  5. rossik

    rossik Гость

    Пароли хранятся в файле учетных записей, который создается здесь же, в программе. Когда пользователь входит, его логин и пароль ищутся в этом файле и проверяются (они хранятся в зашифрованном виде, но это не суть важно). Эта проверка и есть аутентификация, я не спорю. Так вот, дополнительные средства аутентификации- это как раз и есть макс. и мин. сроки действия пароля. Я думаю, что да, время создания пароля должно фиксироваться и сравниваться с текущим, но не знаю, с помощью каких функций это можно сделать...В инете очень мало про системные функции времени...
     
  6. kot_

    kot_ Гость

    Да ну? Што вы говорите...Хто бы мог подумать. :(
    Для получения текущей даты:
    Код (Text):
    char str[256];
    SYSTEMTIME systime;
    GetLocalTime(&systime);
    sprintf(str, "%02d.%02d.%d", systime.wDay, systime.wMonth, systime.wYear);
    Получение текущей даты и времени:
    Код (Text):
    char str[256];
    SYSTEMTIME systime;
    GetLocalTime(&systime);
    sprintf(str, "%02d.%02d.%d - %d:%d:%02d", systime.wDay, systime.wMonth, systime.wYear, systime.wHour, systime.wMinute, systime.wSecond);
    Строка будет содержать: "06.05.2008 - 8:15:26"
    Время создания пароля надо записывать в базу - или как строку времени(как преобразовать в строку я показал ) - или как бинарное значение, благо размер структуры известен.
    Для сравнения времени в данном формате его надо преобразовать в формат FileTime (SystemTimeToFileTime) а затем сравнить функцией CompareFileTime. Вобщем RTFM.
    Кроме того, в билдере существует специальная функция - возвращающая текущее локальное время - называется она как ни странно :) Now();
    Возвращет она класс TDateTime. Он используеться во всех функциях для работы со временем (см. справку).
     
  7. rossik

    rossik Гость

    Да ну? Што вы говорите...Хто бы мог подумать
    kot_, не дразнись!!!
    А зачем возвращать текущее время и дату?Можно же по идее ограничиться системным, оно же только для программы нужно, пользователь его даже не увидит...Просто фиксировать текущее системное время вначале, и потом, при входе в систему..Находить разность текущего и записанного в файле и сравнивать с каким-то заданным, которое будет обозначать максимальный и минимальные сроки действия пароля...Или я чего-то не понимаю?
    Вообщем, еще подумаю, спасибо)
     
  8. SergKappa

    SergKappa New Member

    Регистрация:
    5 апр 2008
    Сообщения:
    4
    Симпатии:
    0
    Word Year, Month, Day, Hour, Min, Sec, MSec;
    TDateTime dtPresent = Now();
    DecodeDate(dtPresent, Year, Month, Day);
    А еще можно установить разрешенное время работы!
    DecodeTime(dtPresent, Hour, Min, Sec, MSec);
    Для удобства пользователей за 1-2 дня можно выдавать предупреждение об окончании срока действия пароля и предлагать его сменить.
    Минимальный срок действия пароля - бред! Зачем? Вот минимальная длинна пароля - другое дело. Если пользователь ввел короткий пароль - потребовать ввести другой.
     
  9. rossik

    rossik Гость

    [Минимальный срок действия пароля - бред! ]
    Скажите это нашему преподу...:(Спасибо за функции, будем изучать)
     
  10. kot_

    kot_ Гость

    Ну так для этого и нужна тебе функция которая возвращает текущее время и дату. :) А затем ты свравниваешь полученное значение с датой которая записана у тебя в файле - получаешь разницу - и проверяешь - если больше минимального срока проверяешь максимальный - меньше максимального выдаешь предупреждение о необходимости смены пароля, если больше максимального - блокирушь вход.



    и требуешь смены пароля.
    SergKappa
    Решение
    ничуть не лучше. этот параметр необходимо тоже хранить - или в файле или в реестре - и точно так же считывать. студенты и те кто только начал программировать - обычно делают его глобальным. :)
     
Загрузка...

Поделиться этой страницей