Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: парольная аутентификация
Форум программистов > Системное программирование > C, С++ и С Builder > Общие вопросы по С и С++
rossik
Помогите, пожалуйста!Нужно разработать средства парольной аутентификации на Borland C++ Builder 6.0, а именно:задание максимального и минимального сроков действия пароля, ведение списка уже использованных паролей задаваемой максимальной длины. Есть ли какие-нибудь стандартные функции?Если нет, подскажите,с чего начать, чем пользоваться?
kot_
Причем тут билдер?
парольная аутендификация - где - в воздухе? Сама по себе?
Свое апи в ОС, свое в других системах, например БД.
В простейшем случае тебе надо определиться кчему ты будешь "аутендифицироваться" - и уже исходя из этого задавать вопрос.
rossik
У меня уже дана программка на С++. Пользователь запускает ее, появляется форма "Вход в систему", пользователь вводит логин и пароль (учетные записи храняться в отдельном файле там же). Есть меню, с помощью него можно вызвать форму "Смена пароля" и поменять пароль. Моя задача дополнить эту прогу дополнительными средствами аутентификации, про которые я писала выше...Предполагаю, надо искать в библиотеке time.h, но конкретные подходящие функции пока не нашла...
SergKappa
Что значит "разработать средства парольной аутентификации на Borland C++ Builder 6.0, а именно:задание максимального и минимального сроков действия пароля, ведение списка уже использованных паролей задаваемой максимальной длины"?
Аутентификация как раз осуществляется с помощью пароля!
Как хранятся пароли? Если в базе данных - можно прикрутить дополнительные поля: дата начала действия пароля, дата окончания и проверять текущую дату.
rossik
Пароли хранятся в файле учетных записей, который создается здесь же, в программе. Когда пользователь входит, его логин и пароль ищутся в этом файле и проверяются (они хранятся в зашифрованном виде, но это не суть важно). Эта проверка и есть аутентификация, я не спорю. Так вот, дополнительные средства аутентификации- это как раз и есть макс. и мин. сроки действия пароля. Я думаю, что да, время создания пароля должно фиксироваться и сравниваться с текущим, но не знаю, с помощью каких функций это можно сделать...В инете очень мало про системные функции времени...
kot_
Цитата(rossik @ 5:05:2008 - 19:29) *
В инете очень мало про системные функции времени...

Да ну? Што вы говорите...Хто бы мог подумать. smile.gif
Для получения текущей даты:
Код
char str[256];
SYSTEMTIME systime;
GetLocalTime(&systime);
sprintf(str, "%02d.%02d.%d", systime.wDay, systime.wMonth, systime.wYear);

Получение текущей даты и времени:
Код
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.
Кроме того, в билдере существует специальная функция - возвращающая текущее локальное время - называется она как ни странно smile.gif Now();
Возвращет она класс TDateTime. Он используеться во всех функциях для работы со временем (см. справку).
rossik
Да ну? Што вы говорите...Хто бы мог подумать
kot_, не дразнись!!!
А зачем возвращать текущее время и дату?Можно же по идее ограничиться системным, оно же только для программы нужно, пользователь его даже не увидит...Просто фиксировать текущее системное время вначале, и потом, при входе в систему..Находить разность текущего и записанного в файле и сравнивать с каким-то заданным, которое будет обозначать максимальный и минимальные сроки действия пароля...Или я чего-то не понимаю?
Вообщем, еще подумаю, спасибо)
SergKappa
Цитата(rossik @ 6:05:2008, 18:32 ) *
Да ну? Што вы говорите...Хто бы мог подумать
kot_, не дразнись!!!
А зачем возвращать текущее время и дату?Можно же по идее ограничиться системным, оно же только для программы нужно, пользователь его даже не увидит...Просто фиксировать текущее системное время вначале, и потом, при входе в систему..Находить разность текущего и записанного в файле и сравнивать с каким-то заданным, которое будет обозначать максимальный и минимальные сроки действия пароля...Или я чего-то не понимаю?
Вообщем, еще подумаю, спасибо)

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

rossik
[Минимальный срок действия пароля - бред! ]
Скажите это нашему преподу...smile.gifСпасибо за функции, будем изучать)
kot_
Цитата(rossik @ 6:05:2008 - 17:32) *
А зачем возвращать текущее время и дату?Можно же по идее ограничиться системным, оно же только для программы нужно, пользователь его даже не увидит...Просто фиксировать текущее системное время вначале, и потом, при входе в систему..Находить разность текущего и записанного в файле и сравнивать с каким-то заданным, которое будет обозначать максимальный и минимальные сроки действия пароля...Или я чего-то не понимаю?

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



и требуешь смены пароля.
SergKappa
Решение
Цитата(SergKappa @ 6:05:2008 - 18:02) *
Для удобства пользователей за 1-2 дня можно выдавать

ничуть не лучше. этот параметр необходимо тоже хранить - или в файле или в реестре - и точно так же считывать. студенты и те кто только начал программировать - обычно делают его глобальным. smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.