Russian Qt Forum

Qt => Общие вопросы => Тема начата: vladislav4k от Июля 09, 2012, 00:19



Название: Нужна помощь
Отправлено: vladislav4k от Июля 09, 2012, 00:19
Здравствуйте, сразу начну: создал приложение где есть 2 поля ввода(логин и пароль) и 2 кнопки(вход, регистрация), когда жмем регистрация, выскакивает окошко в котором вводим имя, логин, пароль, после ввода жмем кнопку "Зарегистрироваться". Имя, хеш логина и хеш пароля сохраняются в тхт файле в директории с программой. При вводе логина и пароля (в основном окне), которые были указаны при регистрации, програма хеширует их и сравнивает с хешами в файле, если подхотят - пишет что удачно.
Но проблема в том, что любой может создать файл, поместить туда хеши(которые сгенерировал в нете) и войти в программу.
Куда сохранять эти файлы чтоб нельзя было из вне создать еще один. Возможно регистр, или что то другое. Или возможно подскажете другую систему рега - вход на локалке. Буду очень благодарен.


Название: Re: Нужна помощь
Отправлено: Bepec от Июля 09, 2012, 06:47
Кхм. Мб проще шифровать свой файлик, а? :)

PS идея о "хеше в тхт" это верх безалаберности :D


Название: Re: Нужна помощь
Отправлено: sidsukana от Июля 09, 2012, 06:57
Как бы если речь идет регистрации, сессиях и тд. То тут по умолчанию должен существовать сервер, соединенный с базой данных и общающийся с клиентом по сокету.


Название: Re: Нужна помощь
Отправлено: Serr500 от Июля 09, 2012, 07:53
Можно прятать в файловых потоках NTFS. Мало кто догадается. Да и как их редактировать простой юзер не допрёт. Недостаток - будет работать только на NTFS. Но лучше, конечно, шифровать. А чтобы хэш нельзя было тупо вычислить, используйте "солёный". Соль прячьте в код бинарника.


Название: Re: Нужна помощь
Отправлено: vladislav4k от Июля 09, 2012, 10:09
Кхм. Мб проще шифровать свой файлик, а? :)

PS идея о "хеше в тхт" это верх безалаберности :D
Можно по подробней о шифрование файлов в qt?

Можно прятать в файловых потоках NTFS. Мало кто догадается. Да и как их редактировать простой юзер не допрёт. Недостаток - будет работать только на NTFS. Но лучше, конечно, шифровать. А чтобы хэш нельзя было тупо вычислить, используйте "солёный". Соль прячьте в код бинарника.
Просьба объяснить как для начинающего, буду благодарен


Название: Re: Нужна помощь
Отправлено: Bepec от Июля 09, 2012, 10:14
Шифрование в qt такое же как и шифрование в С++. Погугли - библиотек и алгоритмов сотни.


Название: Re: Нужна помощь
Отправлено: Serr500 от Июля 09, 2012, 10:40
Просьба объяснить как для начинающего, буду благодарен

Да там всё очевидно.
Файловые потоки NTFS: http://hex.pp.ua/using-alternate-data-streams.php (http://hex.pp.ua/using-alternate-data-streams.php). Если кратко, то вместо Filename.ext используется Filename.ext:Streamname. Не проверял, жрёт ли такие имена класс QFile, но в любом случае собственная реализация даже на основе WinAPI будет элементарной. Нужно знать всего лишь четыре функции - CreateFile, ReadFile(Ex), WriteFile(Ex), CloseHandle.

"Солёный хэш" еще проще. Вместо хэша пароля Password (например, md5) вычисляется хэш строки Salt + Password, Password + Salt или ещё что посложнее типа md5(md5(Salt) + md5(Password)). Подробнее - http://www.xakep.ru/post/40336/ (http://www.xakep.ru/post/40336/). Если соль неизвестна, злоумышленник не сможет подсунуть в файл паролей свой хэш.


Название: Re: Нужна помощь
Отправлено: _OLEGator_ от Июля 09, 2012, 11:42
Создавать не просто хеш логина и пароля, а привязывать их к компу (жд, материнка и т.п.), написав свою функцию генерации строки и при входе заново ее генерировать и сравнивать с уже имеющейся.


Название: Re: Нужна помощь
Отправлено: vladislav4k от Июля 09, 2012, 18:19
Спасибо за полезные советы