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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
neic777
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 138
10.10.2013, 02:55     Авторизация в С++ #1
Есть консольное приложение в котором нужно сделать авторизацию и соответственно, нужно логин и пароль зашифровать и хранить в таком файле, где не сможет достать обычный пользователь. Какие функции в С++ есть для шифрования, в какой файле лучше хранить и как всё это лучше сделать ? Заранее спасибо.

П.С. можно ли будет потом изменить зашрифораный логин и пароль через отдельно написанную функцию ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
2ima
☆ Форумчанин(FSC)☆
 Аватар для 2ima
909 / 288 / 9
Регистрация: 28.04.2013
Сообщений: 2,324
Записей в блоге: 10
Завершенные тесты: 1
10.10.2013, 08:20     Авторизация в С++ #2
замена букв?
AnyOne697
 Аватар для AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 532
10.10.2013, 12:43     Авторизация в С++ #3
А зачем хранить логин и пароль. Такое делать ни в коем случае нельзя, ведь можно будет дезассемблировать программу, посмотреть куда она сохраняет и расшифровать логин и пароль.
Используй стойкие хэши. ЕМНИП, это должно подойти.
neic777
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 138
10.10.2013, 13:16  [ТС]     Авторизация в С++ #4
AnyOne697, но в переменных хранить мне тоже не вариант ибо ещё надо сделать функцию для изменения логина и пароля и соответственно при новом заходе в программу должны уже использоваться новый логин и пароль. А судя из ссылки которую ты дал, она не подходит мне
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
10.10.2013, 13:18     Авторизация в С++ #5
neic777, Логин сохраняется как есть. Для пароля хранится хэш. При попытке логина переданный пароль хешируется и хеши сверяются. При изменении пароля сверяем хэши старого и переданного, устанавливаем новый (сохраняем хэш) и радуемся.
ninja2
 Аватар для 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
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
10.10.2013, 13:47     Авторизация в С++ #7
Цитата Сообщение от ForEveR Посмотреть сообщение
Для пароля хранится хэш
А в каком виде? Если можно простенький пример или ссылку на сам механизм.

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

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

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

Не по теме:

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

SatanaXIII
10.10.2013, 16:16
  #15
 Комментарий модератора 
ninja2, я все видел.
AnyOne697
 Аватар для AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 532
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++

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

Или воспользуйтесь поиском по форуму:
Djam
Саморазвитие <3
 Аватар для Djam
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     Авторизация в С++
Ответ Создать тему
Опции темы

Текущее время: 00:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru