| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > пароль на входе в программу |
| Автор: Vinnety 14.11.2003, 18:39 |
| Подскажите, как лучше всего сделать ввод пароля (пароль отображается '*') до запуска основной программы, т.е. сделать пароль при входе. И подскажите как и где лучше хранить пароль от лишних глаз? |
| Автор: gray_k 14.11.2003, 19:22 |
| Пароль лучше хранить в голове, а в программе вычислять хитрым способом. А ввод проще всего сделать в отдельной форме. Создавать ееё на OnCreate главной формы, если условие пройдено то дальше, нет - выход. А вообще в инете много инфы по защите своих программ. |
| Автор: &-ray 14.11.2003, 19:24 | ||||
Самый простой вариант: модифицируй dpr
PS В uses в dpr должен быть прописан модуль Dialogs |
| Автор: Vit 14.11.2003, 19:30 |
| Правильное хранение паролей: пароль хранить хоть в зашифрованном виде, хоть в не зашифрованном виде нельзя - надо хранить хэш пароля, лучше 128 битный, при вводе пароля его тоже "превращают" в хэш по тому же алгоритму и сравнивают хэши. Преимущества - по хэшу практически невозможно восстановить пароль - т.е. криптование идёт только в одну сторону. Хэш - это проще говоря - контрольная сумма. Т.е. для всего текста по особому алгоритму высчитывается более или менее длинное число, которое в очень высокой степенью вероятности уникально. Т.е. вероятность одного и того же числа для 2х разных текстов крайне низкая. Наиболее применяемыми являются 128 битные хэши (например MD5) - когда на каждый текст любой длины генерится 128 битная строка. Эту строку и хранят. По хэшу восстановить исходный текст нельзя, подобрать текст который будет давать тот же хэш можно, но для 128 битного ключа это будет очень долго - я прикидывал для MD5 - если тупым перебором - то годы, есть более быстрые алгоритмы - но всё равно речь идёт о многих днях машинного времени. Сейчас стандартом де-факто является MD5. Схема проста: Введенный пароль криптуется MD5 и полученный хэш хранится в базе данных Повторно введенный пароль тоже криптуется MD5 и сравнивается хэш с хранимым. Восстановить утерянный пароль нельзя - можно лишь его "обнулить" и прописать заново. Есть библиотека DCP - там реализован MD5 (как и ещё штук 30 алгоритмов криптования |
| Автор: Pakshin A. S. 14.11.2003, 19:31 |
| Найди сайт, посвященный этой теме. Вообще скрыть пароль от нежелательных глаз - проблема ещё та!!! |
| Автор: December 19.3.2006, 18:43 |
| Тема Up. С хэшем - это само собой, Однако в реальных приложениях приходится предоставлять пользователю возможность "автологина" - то есть чтобы прога сама вводила пароль и ехала дальше. Например, это нормальная практика в ICQ клиентах У кого есть соображения, как максимально секьюрно обеспечить локальное хранение паролей? |
| Автор: _hunter 20.3.2006, 12:15 |
| в том-то и проблема ICQ-клиентов -- воруют пароли из всяких .dat-файлов со страшной силой если система NT ( и под одним логином один пользователь сидит ) можно на уровне системы файл шифровать... |
| Автор: December 20.3.2006, 12:24 |
| Не, WinAll... |
| Автор: SlaUr 20.3.2006, 13:34 |
| Ввести login и password при старте программы позволяет готовая компонента из JEDI |
| Автор: December 20.3.2006, 18:04 |
| А как она хранит инфу - известно? |
| Автор: bartram 20.3.2006, 20:43 |
| December, юзай http://www.cityinthesky.co.uk/cryptography.html и тогда ты сможешь облегчить себе жизнь, и затруднить жизнь взломщику |
| Автор: SlaUr 21.3.2006, 11:20 | ||
December,
Она не хранит инфу- это просто готовый диалог для ввода логина и пароля при старте программы , а уж сравнивать и хранить инфу нужно самому |
| Автор: Демо 21.3.2006, 11:42 |
| Да никак. В любом случае - это большая дыра в безопасности. После того, как включена опция "автологина", пароль знать необязательно. Достаточно вычислить, куда сохраняется информация и восстанавливать ее при необходимости "автозалогиниться" каждый раз при входе в программу. Немного усилит безопасность вариант с зависимостью сохраненной зашифрованной информации от даты, например. Но, как я понимаю, такой вариант не устроит. |
| Автор: Alexeis 21.3.2006, 14:02 |
| Я думаю что нужно защитить не только пароль но программу от взлома, в любой подобной системе замена команды JE xyz на JMP xyz приводит к запуску программы в обход всяких паролей... |
| Автор: iddqd 21.3.2006, 16:00 | ||||
Класс для логинов и паролей:
Не доведено до ума. Писалось за 5 минут специально для топика. А вот модуль MD5.pas:
|
| Автор: December 21.3.2006, 16:10 |
| bartram, спасибо за линк, интересная либа. Господа, имеет место быть значительное отклонение от темы Вопрос не в том, насколько это плохо и почему именно. Просто надо дать юзеру возможность автологина... |
| Автор: December 21.3.2006, 16:38 |
| iddqd, спасибо за пример (писали пост практически одновременно |
| Автор: Foley 21.3.2006, 23:51 | ||||
В ДРКБ это есть
узнает находится ли эта прога в режиме отладки, вызывается так
|
| Автор: Alexeis 22.3.2006, 12:50 |
| извините за оффтоп (просто не могу удержаться) Foley, эта защита стара как windows, почти все дебагеры оснащены средством обхода такой штуки (если не встроеной, так дополнительной) |
| Автор: December 22.3.2006, 13:35 |
| Что-то тема опять начала уползать... |
| Автор: Snowy 22.3.2006, 18:44 | ||||||
Могу предложить свой класс для шифрования строки:
Пример использования:
Добавлено @ 18:49 Вот пример на едитах:
|
| Автор: bems 22.3.2006, 19:59 | ||
Добавлено @ 20:04 И вообще, пусть автор темы уточнит задачу. Зачем тебе пароль? а) чтобы недопустить нелицензионного использования программы б) чтобы ограничить права пользователя при работе с программой. |