Russian Qt Forum
Октябрь 01, 2024, 07:18 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Хранение паролей  (Прочитано 16294 раз)
kalif
Гость
« : Февраль 03, 2011, 11:02 »

Всем привет.
Суть проблемы: в настройках программы необходимо хранить пароль доступа к СУБД. Сейчас он храниться открытым текстом, но это не есть гуд.
Подскажите как лучше скрыть пароль от посторонних глаз без самостоятельной реализации алгоритма шифрования?
Записан
Omg
Гость
« Ответ #1 : Февраль 03, 2011, 11:12 »

Думаю, что никак. Если есть данные хранимые на диски и их необходимо защитить от прочтения, то единственный вариант - шифрование.
Записан
kalif
Гость
« Ответ #2 : Февраль 03, 2011, 12:11 »

А в Qt нету готовых решений на эту тему?
Записан
SimpleSunny
Гость
« Ответ #3 : Февраль 03, 2011, 12:18 »

Смотря от кого прятать будете.
Можно использовать простой XOR http://www.prog.org.ru/topic_13420_0.html

Если модель угрозы "более продвинутая", то тут уже особо не спасешься, так как можно прослушать снифером сетевой трафик и получить пароль в открытом виде, или скопировать программу домой и декомпилировать ее и узнать пароль.
Записан
kalif
Гость
« Ответ #4 : Февраль 03, 2011, 12:23 »

Тоже подумывал использовать обычный XOR, скорее всего так и сделаю.
А прослушка трафика не страшна, так как работа ведется с локальной БД.
Записан
kirill
Гость
« Ответ #5 : Февраль 03, 2011, 12:46 »

OpenSSL - посмотри, я в блоге писал как его использовать для Qt.
http://qtcoder.blogspot.com/2010/02/qt.html
Записан
developer
Гость
« Ответ #6 : Февраль 04, 2011, 12:24 »

Можно сделать еще так.

Береш MD5 от пароля, сохраняеш в базу.
Юзер вводит пароль и нажимает Ентер, берем MD5 от введеного пароля и проверяем на равность с MD5 из базы.
Если равны - значит пускаем дальше, если нет значит баним.



Записан
kirill
Гость
« Ответ #7 : Февраль 04, 2011, 12:27 »

Можно сделать еще так.

Береш MD5 от пароля, сохраняеш в базу.
Юзер вводит пароль и нажимает Ентер, берем MD5 от введеного пароля и проверяем на равность с MD5 из базы.
Если равны - значит пускаем дальше, если нет значит баним.

А ему не надо чтобы юзер вводил. Он хочет сам вводить его в базу, а лежит он у него во внешних настройках в открытом виде.
Записан
Prm
Гость
« Ответ #8 : Февраль 04, 2011, 13:39 »

Cryptopp тебе в помощь! Отличная криптографическая библиотечка.
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #9 : Февраль 04, 2011, 20:45 »

Хранить его в ресурсах Qt в сжатом виде - намного кошернее, чем XOR получится, да еще и пару байт памяти съэкономишь Улыбающийся
Записан
asrael
Гость
« Ответ #10 : Февраль 05, 2011, 23:42 »

Можно сделать еще так.

Береш MD5 от пароля, сохраняеш в базу.
Юзер вводит пароль и нажимает Ентер, берем MD5 от введеного пароля и проверяем на равность с MD5 из базы.
Если равны - значит пускаем дальше, если нет значит баним.
я недавно тоже мучался с этим вопросом.. ничего лучше не придумал, чем сохранять в файл настроек шифрованый пароль. для этого есть в Qt функция:
Код:
QString pass_hash = QCryptographicHash::hash(hsh,QCryptographicHash::Md5);
в принципе, обратную операцию сделать сложновато, так что знание hash-суммы ничего вредителю не даст. а программа пусть проверяет, совпадают ли суммы введенного пароля и то, что есть.. или как Вам там нужно.. да и сам файл с настройками можно пихнуть в нетривиальное место на всякий пожарный.. или на съемном носителе его хранить, если совсем тяжко..)
Записан
iRQSX
Гость
« Ответ #11 : Июнь 07, 2011, 16:07 »

Личное мнение: md5 это конечно решение, но не всегда. Вот пример: постгрес на винде при установке просит пароль на подключение к серверу, например укажем "qwerty". Идем дальше, в своей программе надо подключиться к этой базе
Код
C++ (Qt)
db.setPassword("qwerty");
 
если мы тут хотим использовать хеш то его надо еще до установки сервака знать. Неудобно... Вот тоже бъюсь головой об стену как реализовать авторизацию и подключение к базе. Даже если использовать обратимый алгоритм шифрования то встает вопрос где хранить ключи шифрования.
p.s.
Код
C++ (Qt)
QString pass_hash = QCryptographicHash::hash("qwerty",QCryptographicHash::Md5);
выдает такой хеш: \xaf\xa0\xcbT\xc1nr\x2-0\x8as\xcc\x61\x96\x94
а сайт выдает e86fdc2283aff4717103f2d44d0610f7
Объясните кто прав или где я накосячил...
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #12 : Июнь 07, 2011, 16:23 »

p.s.
Код
C++ (Qt)
QString pass_hash = QCryptographicHash::hash("qwerty",QCryptographicHash::Md5);
выдает такой хеш: \xaf\xa0\xcbT\xc1nr\x2-0\x8as\xcc\x61\x96\x94
а сайт выдает e86fdc2283aff4717103f2d44d0610f7
Объясните кто прав или где я накосячил...
Код
C++ (Qt)
QString pass_hash = QCryptographicHash::hash("qwerty",QCryptographicHash::Md5).toHex();
А хеш - d8578edf8458ce06fbc5bb76a58c5ca4.

e86fdc2283aff4717103f2d44d0610f7 - это qwertyu.
Записан
iRQSX
Гость
« Ответ #13 : Июнь 07, 2011, 18:42 »

Спасибо за ответ. Есть еще одна заморочка: делаю
Код
C++ (Qt)
qDebug()<<QCryptographicHash::hash("qweqwe",QCryptographicHash::Md5).toHex();
 
 
получаю efe6398127928f1b2e9ef3207fb82663

установил такой же пароль(qweqwe) на пользователя в постгресе получаю такое:

то есть хеш md5d2d430490cc35011e0941f20108c8c4e
Создаю еще одного пользователя с таким же паролем хеш другой...

Приставка "md5" стандартная, но остальное все равно совсем не похоже
« Последнее редактирование: Июнь 07, 2011, 18:49 от iRQSX » Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #14 : Июнь 07, 2011, 20:56 »

установил такой же пароль(qweqwe) на пользователя в постгресе получаю такое:
то есть хеш md5d2d430490cc35011e0941f20108c8c4e
Создаю еще одного пользователя с таким же паролем хеш другой...
Приставка "md5" стандартная, но остальное все равно совсем не похоже
Солит чем-нибудь.
Md5 в чистом виде уже не используют для хранения пароля.
Для простых паролей они давно просчитаны, поэтому по хешу можно будет восстановить пароль, как я в прошлом посте по e86fdc2283aff4717103f2d44d0610f7 нашёл "qwertyu".
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.17 секунд. Запросов: 23.