Russian Qt Forum

Qt => Общие вопросы => Тема начата: linuxoid от Сентябрь 07, 2007, 10:43



Название: Как зашифровать и засунуть в файл пароль
Отправлено: linuxoid от Сентябрь 07, 2007, 10:43
Как зашифровать пароль?я буду сохранять его в файле, а затем нужно будет расшифровать пароль и вытащить из файла.как обращяться с файлами я знаю а вот как зашифровать помогите! :'(


Название: Re: Как зашифровать и засунуть в файл пароль
Отправлено: BD от Сентябрь 07, 2007, 10:59
Мне кажется, расшифровывать его не обязательно.
Можно использовать, например, различные хэш функции.
К примеру, пользователь первый раз ввел пароль, ты получил результат хэш-функции от этого пароля и записал в файл.
При следующей попытке входа, ты снова делаешь хэш на введенный пароль и сравниваешь его с хранимым в файле.
Таким образом, пароль остается скрытым. Если надо, могу дать пример использования аналога, где в качестве хэша берется md5.

Если же все-таки необходимо его расшифровывать, придется рыть в сторону криптографических функций типа RSA и др.
В принципе и к этому могу дать пример, все зависит от задачи, которая тебе нужна


Название: Re: Как зашифровать и засунуть в файл пароль
Отправлено: Alexandr Az от Сентябрь 07, 2007, 11:27
Фишка в том, что тебе его расшифровывать то и не надо.
Если ты его можешь расшифровать, то и любой другой может расшифровать.
Берешь свой пароль, шифруеш им строку любую (мож своё имя) и получаешь абру кадабру которую записываешь в файл.
Когда юзвер вводит пароль, твоя же строка шифруется с тем, что ввёл юзвер, и получается опять абр кадабра. Вот эту абру кадабру ты и сравниваешь с аброй кадаброй в файле.


Название: Re: Как зашифровать и засунуть в файл пароль
Отправлено: QCasper от Сентябрь 07, 2007, 12:01
Фишка в том, что тебе его расшифровывать то и не надо.
Если ты его можешь расшифровать, то и любой другой может расшифровать.
Берешь свой пароль, шифруеш им строку любую (мож своё имя) и получаешь абру кадабру которую записываешь в файл.
Когда юзвер вводит пароль, твоя же строка шифруется с тем, что ввёл юзвер, и получается опять абр кадабра. Вот эту абру кадабру ты и сравниваешь с аброй кадаброй в файле.

А если пользователю неохота каждый раз пароль вводить и он хочет воспользоваться галочкой save password. Вдруг ему такую фичу надо?


Название: Re: Как зашифровать и засунуть в файл пароль
Отправлено: BD от Сентябрь 07, 2007, 13:37
В этом случае, надо файл с паролями зашифровать, а для этого опять же используются различные криптоалгоритмы
Это уже относится к разделу криптографии, а принципы реализации уже описали

Кстати, функции для шифрования, хэширования и т.п. вещей можно взять из исходников библиотеки OpenSSL,
описание ее http://ru.wikipedia.org/wiki/OpenSSL (http://ru.wikipedia.org/wiki/OpenSSL), там же ссылки на страницу загрузки

Замечательная штука, чтобы че-нидь скрыть :)


Название: Re: Как зашифровать и засунуть в файл пароль
Отправлено: Alexandr Az от Сентябрь 07, 2007, 15:18
Кстати, функции для шифрования, хэширования и т.п. вещей можно взять из исходников библиотеки OpenSSL,
описание ее http://ru.wikipedia.org/wiki/OpenSSL (http://ru.wikipedia.org/wiki/OpenSSL), там же ссылки на страницу загрузки

Я думаю для его задачи QCryptographicHash (появилси в 4.3) хватит:

qDebug() << QCryptographicHash::hash("azazello",QCryptographicHash::Md5);


Название: Re: Как зашифровать и засунуть в файл пароль
Отправлено: BD от Сентябрь 07, 2007, 15:30
Блин, не знал, спасибо :)


Название: Re: Как зашифровать и засунуть в файл пароль
Отправлено: kurbigor от Сентябрь 08, 2007, 09:42
А если у меня QT3, как можно вывернуться?


Название: Re: Как зашифровать и засунуть в файл пароль
Отправлено: linuxoid от Сентябрь 08, 2007, 10:25
Мне кажется, расшифровывать его не обязательно.
Можно использовать, например, различные хэш функции.
К примеру, пользователь первый раз ввел пароль, ты получил результат хэш-функции от этого пароля и записал в файл.
При следующей попытке входа, ты снова делаешь хэш на введенный пароль и сравниваешь его с хранимым в файле.
Таким образом, пароль остается скрытым. Если надо, могу дать пример использования аналога, где в качестве хэша берется md5.

Если же все-таки необходимо его расшифровывать, придется рыть в сторону криптографических функций типа RSA и др.
В принципе и к этому могу дать пример, все зависит от задачи, которая тебе нужна

дай пожалуйста код :)


Название: Re: Как зашифровать и засунуть в файл пароль
Отправлено: pastor от Сентябрь 08, 2007, 11:40
А если у меня QT3, как можно вывернуться?


Используй OpenSSL


Название: Re: Как зашифровать и засунуть в файл пароль
Отправлено: BD от Сентябрь 08, 2007, 18:56
Цитировать
дай пожалуйста код

хэша или шифрования?


Название: Re: Как зашифровать и засунуть в файл пароль
Отправлено: TukiNov от Сентябрь 09, 2007, 13:59
Я например делаю так:
Код:
QString code(char *in,int szin,char *key,int szkey)
{//Код шифрующей функции
    for(int i = 0,t = 0; i < szin; in[i++] ^= key[t++]) if(t >= szkey) t = 0;
    return in;
}
с помощью неё можно и целые файлы шифровать, только чуть переделать нада. Она же и служит и декодировщиком.


Название: Re: Как зашифровать и засунуть в файл пароль
Отправлено: linuxoid от Сентябрь 10, 2007, 08:10
может покажешь переделанный код для шифрования?


Название: Re: Как зашифровать и засунуть в файл пароль
Отправлено: QCasper от Сентябрь 10, 2007, 09:23
Я например делаю так:
Код:
QString code(char *in,int szin,char *key,int szkey)
{//Код шифрующей функции
    for(int i = 0,t = 0; i < szin; in[i++] ^= key[t++]) if(t >= szkey) t = 0;
    return in;
}
с помощью неё можно и целые файлы шифровать, только чуть переделать нада. Она же и служит и декодировщиком.

С таким шифром только от детей до 10 дет файлы прятать :) И то не от всех :) Используйте хотя бы простые потоковые или (лучше) блочные шифры, основанные на генерации последовательностей псевдослучайных чисел.


Название: Re: Как зашифровать и засунуть в файл пароль
Отправлено: kurbigor от Сентябрь 15, 2007, 00:11
На самом деле я просто имитирую команду useradd. Нужно в нее подсунуть пароль в зашифрованном виде. Задача наверняка решённая, судя по наличию графических программ ведения пользователей. man отсылает к функции crypto. Может, кто-то знает ссылку на пример её использования?


Название: Re: Как зашифровать и засунуть в файл пароль
Отправлено: vaprele07 от Сентябрь 15, 2007, 01:52
pwd.h (http://www.opennet.ru/search.shtml?exclude=index%7C%2Fman.shtml&words=pwd.h)