Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Хранение паролей


Страницы:   1 2 3

Пантелеев Иван ©   (2005-08-13 00:10:00) 

Я знаю что можно хранить пароли к программе в ini файлах, реестре, но проблема в том что там их может посмотреть любой, есть ли более координальный способ хранения паролей?


Zeqfreed   (2005-08-15 01:28:00) [21]

Zeqfreed ©   (15.08.05 1:26) [25]
Ой-ё, извиняюсь за грамматику и опечатки, что-то я сегодня заработался :)


Zeqfreed   (2005-08-15 01:26:00) [22]

Пантелеев Иван   (15.08.05 1:03) [24]
Суть хэширования в том, чтобы не сохранять данные (в твоем случае пароль) ни в открытов виде, ни в зашифрованном. Вместо этого данные обрабатываются специально хэш-ф-цией, которая для одних и тех же исходных данных возвращает одинаковое значение, причем:
1. подобрать различные исходные данные при обработке которых ф-ция вернет одинаковые значения практически невозможно
2. во возвращаемому значению невозможновосстоновить исходные данные

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

Как уже было сказано, исходник хэш-функции и пример использования можно взять здесь:
http://www.fichtner.net/delphi/md5.delphi.phtml

P.S. Если что-то непонятно, то лучше спроси что, а не отказывайся от данного метода.

P.P.S. Кеш и Хэш абсолютно разные вещи )


Пантелеев Иван   (2005-08-15 01:03:00) [23]

vrem   (13.08.05 20:46) [22]
Чего-то я там с кешем ничего не понял.
Может у кого ни быдь есть более лучший пример или ну не знаю ...


bva   (2005-08-13 21:10:00) [24]

Кодируй пароль

function EnDeCrypt(const text:String):String;
var i:integer;
begin
 Result:=text;
 for i:=1 to Length(text) do
   Result[i]:=chr(not(ord(text[i])));
end;


vrem   (2005-08-13 20:46:00) [25]

Исходник Md5 и исходник програмы для тестирования исходника MD5
http://www.fichtner.net/delphi/md5.delphi.phtml

всё вместе килобайт 20


vrem   (2005-08-13 20:03:00) [26]

Пантелеев Иван  
Пользователь вводит пароль "корова", ваша программа получает это слово "корова" и обрабатывает некой функцией.
Function('корова')
Функция обрабатывает слово "корова", и выдаёт результат, например его хеш - что то вроде "abcd3452f67sdf" - именно этот результат Вы записываете в файл *.ini.

В следующий раз пользователь вводит пароль, программа опять обрабатывает пароль этой функцией, получает результат и сравнивает со считанным из ini файла. если совпадает - пользователь получает доступ.

Так делать удобнее, т.к. при пароле "корова" хеш его "abcd3452f67sdf" не позволит пользователю получить доступ - ведь программа обработает его и получит другое значение хеша. Поэтому прятать хеш не нужно - он фактически ничего не даёт злоумышленнику - как пароль не действует и получить из него реальный пароль "корова" так же не получится.
Удобно и быстро рассчитывать хеш используя алгоритм MD5 - там есть функция "Рассчитать хеш строки"


Пантелеев Иван   (2005-08-13 19:42:00) [27]

Если можно - объясните как это сделать?


Пантелеев Иван   (2005-08-13 19:41:00) [28]

Нет, я думаю, что кеш для меня сейчас это ещё рано. По этому я хочу чтобы пароли к программе хранились в БД.


Anatoly Podgoretsky   (2005-08-13 15:41:00) [29]

Хватает хранение хешей


Пантелеев Иван   (2005-08-13 14:52:00) [30]

Тоесть?


Anatoly Podgoretsky   (2005-08-13 13:23:00) [31]

Пантелеев Иван   (13.08.05 13:11) [14]
Ну и зачем для этого хранить пароль?


Пантелеев Иван   (2005-08-13 13:14:00) [32]

DrPass ©   (13.08.05 01:37) [9]
А можно ссылку на Lockbox


Пантелеев Иван   (2005-08-13 13:11:00) [33]

Моя программа дожна открываться по вводу пароля который будет, у каждого созданного в программе пользователя. На данный момент эти пароли и имена пользователей хранятся в ini-файле. Но это не безопастно. Именно по этому мне нужны какие-то более кардинальные методы для хранения паролей и имён пользователей к программе.


KilkennyCat   (2005-08-13 01:41:00) [34]

Удалено модератором


Alexander Panov   (2005-08-13 01:40:00) [35]

Ты скажи, для чего тебе хранить пароль?


Пантелеев Иван   (2005-08-13 01:38:00) [36]

А кто ни будь может мне подробно рассказать как создать маленькую БД для хранения там паролей, и как их от туда считать?


Совет   (2005-08-13 01:38:00) [37]


> Кефир87 ©   (13.08.05 01:21) [8]

Если юзер задаст пароль коротким, то подобрать будет эллементарно.


DrPass   (2005-08-13 01:37:00) [38]


> Кещ - насколько я знаю большинство программ умеют расшифровывать

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

> Кефир87 ©   (13.08.05 01:21) [8]

Xor-шифрование. Хорошо. Это самый простой алгоритм. Но он, к сожалению, симметричный. Легко взламывается и без перебора.

> Пантелеев Иван   (13.08.05 00:50) [6]

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


Кефир87   (2005-08-13 01:21:00) [39]

function Crypt(s:string):string;
begin
 Result := s;
 for i := 0 to length(Result)-1 do
   if odd(i) then Result[i] := Result[i] xor 5 else Result[i] := Result[i] xor 2;
end;

...
AssignFile(f, "password.txt");
Reset(f);
Readln(f, s);
s := Crypt(s);
CloseFile(f);
...

AssignFile(f, "password.txt");
Rewrite(f);
Writeln(Crypt(s));
CloseFile(f);
...


KilkennyCat   (2005-08-13 01:04:00) [40]


> Кто-то мне говорил, что пароли можно хранить в базе данных
>

ничем не отличается от хранения в реестре, инишках и т.д. с точки зрения доступа. Создавать же БД ради пароля... это только если паролей куча :))


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо