Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
neic777
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 138
#1

Авторизация в С++ - C++

10.10.2013, 02:55. Просмотров 1447. Ответов 16
Метки нет (Все метки)

Есть консольное приложение в котором нужно сделать авторизацию и соответственно, нужно логин и пароль зашифровать и хранить в таком файле, где не сможет достать обычный пользователь. Какие функции в С++ есть для шифрования, в какой файле лучше хранить и как всё это лучше сделать ? Заранее спасибо.

П.С. можно ли будет потом изменить зашрифораный логин и пароль через отдельно написанную функцию ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
2ima
☆ Форумчанин(FSC)☆
910 / 289 / 9
Регистрация: 28.04.2013
Сообщений: 2,377
Записей в блоге: 10
Завершенные тесты: 1
10.10.2013, 08:20     Авторизация в С++ #2
замена букв?
AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 533
10.10.2013, 12:43     Авторизация в С++ #3
А зачем хранить логин и пароль. Такое делать ни в коем случае нельзя, ведь можно будет дезассемблировать программу, посмотреть куда она сохраняет и расшифровать логин и пароль.
Используй стойкие хэши. ЕМНИП, это должно подойти.
neic777
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 138
10.10.2013, 13:16  [ТС]     Авторизация в С++ #4
AnyOne697, но в переменных хранить мне тоже не вариант ибо ещё надо сделать функцию для изменения логина и пароля и соответственно при новом заходе в программу должны уже использоваться новый логин и пароль. А судя из ссылки которую ты дал, она не подходит мне
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
10.10.2013, 13:18     Авторизация в С++ #5
neic777, Логин сохраняется как есть. Для пароля хранится хэш. При попытке логина переданный пароль хешируется и хеши сверяются. При изменении пароля сверяем хэши старого и переданного, устанавливаем новый (сохраняем хэш) и радуемся.
ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
10.10.2013, 13:25     Авторизация в С++ #6
Цитата Сообщение от neic777 Посмотреть сообщение
П.С. можно ли будет потом изменить зашрифораный логин и пароль через отдельно написанную функцию ?
Обычно используеться необратимое шифрование, так что потом после зашифровки уже расшифровать нельзя. От пользователь например регистрируется шифруется пароль например по md5 алгоритму необратимо, и хешь сохраняется в текстовом файле, затем когда входит пользователь он вводит пароль который снова шифруется по md5 и хеши сравниваются, если они одинаковы, то пользователь входит куда нужно (flag ставим в true какой нить).
Хеши если своруют их потом еще расшифровать нужно, и можно только методом перебора и вообще еще нужно знать алгоритм по которому они были получены. У меня слово из 6 символов минут 5 перебирает, а если пароль из 10 символов, то программа должна непрерывно работать мб день два, а мб и недели.
SatanaXIII
Супер-модератор
Эксперт С++
5589 / 2623 / 239
Регистрация: 01.11.2011
Сообщений: 6,448
Завершенные тесты: 1
10.10.2013, 13:47     Авторизация в С++ #7
Цитата Сообщение от ForEveR Посмотреть сообщение
Для пароля хранится хэш
А в каком виде? Если можно простенький пример или ссылку на сам механизм.

P.S. Вот нашел забавную статейку про "подсаливание хэшей": Как лучше хранить хэши паролей.

P.P.S.
Цитата Сообщение от ninja2 Посмотреть сообщение
необратимое шифрование
к сожалению нету таких.
(см. первое правило криптографии)
ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
10.10.2013, 14:18     Авторизация в С++ #8
Цитата Сообщение от SatanaXIII Посмотреть сообщение
к сожалению нету таких.
(см. первое правило криптографии)
Как это нету, я читал за шифрование еще когда пхп учил, там бывает два вида шифрования обратимое и не обратимое, например md5 это необратимое шифрование, получившийся хешь уже нельзя расшифровать. И есть обратимое, когда данные шифруются и заново хешь можно расшифровать. Для паролей как правило используют необратимое шифрование.
Цитата Сообщение от SatanaXIII Посмотреть сообщение
А в каком виде? Если можно простенький пример или ссылку на сам механизм.
P.S. Вот нашел забавную статейку про "подсаливание хэшей": Как лучше хранить хэши паролей.
Ну как в каком виде? Просто в виде строки, эта строку пофигу куда ты запишешь, где хочешь там ее и хрони, хочешь в БД храни, хочешь в текстовый файл пиши. Ну в принципе тебе нужно что бы определить какой хешь принадлижит юзеру, хронить идентификатор юзера, или полностью строку запиши имя юзера и через пробел хешь сохранил, и так весь текстовый файл,. Для примера пофигу где он сохранить, а вообще нужно если в файле по аналогии с БД создать первичные ключ, что бы привязывать все данные пользователя к этому ключу, когда он авторизуется выдавать ему по этому ключу данные, ну например файл с паролями хронятся данные в виде:
1 / ninja2 / ksadjflsadjdlfsdfasdfjksadjfaksdjfladskjflkasdjflkasdjflksadjlfjasd
2 / ForEveR / sadkfjsdlfjlsadkjflksadjflkasdjflkadsjflksadjlkfjsadlkfjsadklfjlsajf
3 / Satana XIII / ksdfjlsakjflksajdfkljsadlkfjsadkjfksadjflksdjlkfjsadlkfjkasdjflsdf

А данные пользователей хронятся в другом файле например файл user_data.txt
1 / Гуру С++ / Харьков / 1
2 / moderator / город / 3
3/ moderator / / 2

Примерно так, при аторизации мы вытягиваем с первого файла (таблицы) идентификатор (первичный ключь) и допустим записываем в флаг который показывает что пользователь авторизован, а в фале user_data.txt мы уже ищем запись которая соответствует флагу, от если у нас идентификатор будет 3, то из файла мы должны вырвать строку 2 / modrator / город / 3, тут последний столбец это вторичный ключь, типо базы данных.

SatanaXIII, это отак примерно все должно работать, это принцип, а там уже какую разновидность программы создашь.

Добавлено через 8 минут
Вообще должен быть сервер, программа должна отослать логин и пароль на сервер, сервер обрабатывает запрос и если пользователь проходит авторизацию (правильный логин и пароль есть), то та программа что на сервере отсылает пользователю переменную идентификатор, это может быть что угодно какое нить число, мб хешь какой нить специально сгененировано что то. Программа клиент получает идентификатор и если что надо получить какие нить данные от сервера, она уже запрос посылает с этим идентификатором, ну и сервер уже получает идентификатор у себя проверяет, ага создан идентификатор, значит пользователь авторизован, она должна запомнить айди пользователя и выдать нужные данный, айди или первичный ключ мы используем для поиска нужных данных.

Ладно разбирайся это тебе не просто так, в двух словах не расскажешь, это целая тема, это я так просто убогий примерчик привел, что бы понятно было примерно как все работает.
iRomul
158 / 99 / 11
Регистрация: 17.10.2012
Сообщений: 480
Завершенные тесты: 1
10.10.2013, 15:36     Авторизация в С++ #9
Цитата Сообщение от ninja2 Посмотреть сообщение
Как это нету, я читал за шифрование еще когда пхп учил, там бывает два вида шифрования обратимое и не обратимое, например md5 это необратимое шифрование, получившийся хешь уже нельзя расшифровать. И есть обратимое, когда данные шифруются и заново хешь можно расшифровать. Для паролей как правило используют необратимое шифрование.
MD5 можно обратить, однако существует множество различных данный с одинаковым хешем, по-этому из результатов обратного хеширования еще нужно отыскать нужны вам данные.

Добавлено через 6 минут
Вот еще вариант:
Радужная таблица
ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
10.10.2013, 15:50     Авторизация в С++ #10
Добавлено через 6 минут
Цитата Сообщение от iRomul Посмотреть сообщение
MD5 можно обратить, однако существует множество различных данный с одинаковым хешем, по-этому из результатов обратного хеширования еще нужно отыскать нужны вам данные.
Аха ха и какая ж функция есть для расшифровки? Для обратимых алгоритмов шифрования всегда есть функция которой можно расшифровать хеш, а в мд5????
XRuZzz
Антикодер
631 / 532 / 27
Регистрация: 15.09.2012
Сообщений: 2,482
10.10.2013, 16:02     Авторизация в С++ #11
я вместо md5 использую хэш по алгоритму Blowfish
но можно и ГОСТами хэши создавать, это тоже надёжнее чем md5, ещё нужно почитать про "соль" при хэшировании пароля.
главное определиться с алгоритмом и найти нужную библиотеку, если интересно можно и самому написать, но вероятность взлома для самописной реализации выше, чем проверенной. после авторизации нужно использовать механизм сессий.
iRomul
158 / 99 / 11
Регистрация: 17.10.2012
Сообщений: 480
Завершенные тесты: 1
10.10.2013, 16:03     Авторизация в С++ #12
ninja2, как-то так
ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
10.10.2013, 16:12     Авторизация в С++ #13
iRomul, аха это ж перебор, а если у меня будет пароль из 15 букв ты его никогда не обратишь. Они там не расшифровывают, а наоборот шифруют готовые слова и сравнивают с существующим хешем, потому что это необратимое шифрование, назад его невозможно расшифровать. Нету алгоритма дешифрования.
iRomul
158 / 99 / 11
Регистрация: 17.10.2012
Сообщений: 480
Завершенные тесты: 1
10.10.2013, 16:14     Авторизация в С++ #14
ninja2,

Не по теме:

прости меня, о великий гуру

SatanaXIII
10.10.2013, 16:16
  #15
 Комментарий модератора 
ninja2, я все видел.
AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 533
10.10.2013, 21:49     Авторизация в С++ #16
Цитата Сообщение от ninja2 Посмотреть сообщение
Аха ха и какая ж функция есть для расшифровки? Для обратимых алгоритмов шифрования всегда есть функция которой можно расшифровать хеш, а в мд5????
Online Decrypter
Вы отстали от жизни.
Цитата Сообщение от ForEveR Посмотреть сообщение
Логин сохраняется как есть. Для пароля хранится хэш.
Не обязательно. Можно (и обычно всё же нужно) хэшировать и логин. Просто обычно логин сохраняется и в первозданном виде. А иногда используют хэш-функцию от пары логин-пароль, чтобы усложнить подбор коллизии.

Добавлено через 1 час 5 минут
Алерт. Статья конечно неплохая, но акцент лучше оставить именно на этом. Суть в том, что MD5 очень неустойчив к аттакам на коллизии. А если вспомнить, что паролей не так уж и много (для полного перебора), то очевидно, что можно довольно быстро перебрать все возможные пароли и относительно быстро найти коллизию (или исходный пароль).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.10.2013, 09:18     Авторизация в С++
Еще ссылки по теме:

C++ Авторизация на сайтах, почему не работает?
Авторизация в СТИМ написана ну все равно не работает то что я хочу C++
C++ Авторизация логин-пароль
Авторизация пользователя по первой введенной букве C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Djam
Саморазвитие <3
34 / 24 / 1
Регистрация: 28.12.2012
Сообщений: 235
Записей в блоге: 1
11.10.2013, 09:18     Авторизация в С++ #17
http://md5list.ru/ расшифровка md5, из N количества раз, а N > 100 , 1 раз не получилось пароль расшифровать.
Yandex
Объявления
11.10.2013, 09:18     Авторизация в С++
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru