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 файлах, реестре, но проблема в том что там их может посмотреть любой, есть ли более координальный способ хранения паролей?


Antonn   (2005-08-17 05:40:00) [1]

Пантелеев Иван   (17.08.05 0:58) [42]
первая процедура сохраняет имя и пароль (в edit1.Text имя, в edit2.Text - пароль):
SavePassword(edit1.Text,edit2.Text);

вторая функция проверяет его:
ifCheckPassword(edit1.Text,edit2.Text) then
//проверку прошла
else
//проверку не прошла


Германн ©   (17.08.05 1:27) [44]
там запятая есть...

KilkennyCat ©   (17.08.05 1:31) [45]
О чем уже неоднократно говорилось: печатайте читабельно! и пользуйтесь < СODE > < /CODE >

я пытался, просто про Code забыл


KilkennyCat   (2005-08-17 01:31:00) [2]


> [44] Германн ©   (17.08.05 01:27)


в описании 2 параметра, просто форматирование отсутствует. О чем уже неоднократно говорилось: печатайте читабельно! и пользуйтесь < СODE > < /CODE >


Германн   (2005-08-17 01:27:00) [3]

2 Пантелеев Иван   (17.08.05 00:58) [42]
>Antonn ©   (16.08.05 08:55) [37]
>Всё скомпилировалось - только вот я чего-то не совсем понимаю >что делает этот код.

Я тоже не понимаю, "что делает этот код"?
Но я и не понимаю как могло "Всё скомпилироваться", если в B>описании функции CheckPassword- один параметр, а в использовании- два?


Пантелеев Иван   (2005-08-17 00:59:00) [4]

Antonn ©   (16.08.05 08:55) [37]
Всё скомпилировалось - только вот я чего-то не совсем понимаю что делает этот код.


Пантелеев Иван   (2005-08-17 00:58:00) [5]

Antonn ©   (16.08.05 08:55) [37]
Всё скомпилировалось - только вот я чего-то не совсем понимаю что делает этот код.


Antonn   (2005-08-16 16:10:00) [6]

Пантелеев Иван   (16.08.05 13:16) [38]
Delphi не может найти TPassElement!

тьфу, елки, забыл:)

type
TPassElement = record
_name:shortstring;
_pass:shortstring;
end;


KilkennyCat ©   (16.08.05 13:26) [39]
а ловеркэйс-то зачем? чтоб менее надежно было?

так инетресней, не навижу регистры:)

KilkennyCat ©   (16.08.05 13:29) [40]
ну и ладно, можно подумать [34] сложнее:)))


KilkennyCat   (2005-08-16 13:29:00) [7]

и с точки зрения надежности от взлома: все, что надо найти и обойти, это -
if (lowercase(_name)=lowercase(pe._name))and(lowercase(pass)=lowercase(pe._pass)) then

Что не сложнее разобрать проксоренный пароль.


KilkennyCat   (2005-08-16 13:26:00) [8]


> Antonn ©   (16.08.05 08:55)


а ловеркэйс-то зачем? чтоб менее надежно было?


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

Delphi не может найти TPassElement!


Antonn   (2005-08-16 08:55:00) [10]

Пантелеев Иван   (16.08.05 1:01) [34]
Примерно так (только вместо пароля можно сохранять хеш, и шифровать перед сохранением):
procedureTForm1.SavePassword(_name,pass: string);
var_MM:TMemoryStream; PE:TPassElement;
begin
_MM:=TMemoryStream.Create;
try
PE._name:=_name;
PE._pass:=pass;
_mm.Write(pe,sizeof(TPassElement));
_mm.SaveToFile(extractfilepath(application.ExeName)+'key');
finally
_mm.Free;
end;
end;

functionTForm1.CheckPassword(_name,pass: string):boolean;
var_MM:TMemoryStream; PE:TPassElement;
begin
result:=false;
_MM:=TMemoryStream.Create;
try
iffileexists(extractfilepath(application.ExeName)+'key') then begin
_mm.LoadFromFile(extractfilepath(application.ExeName)+'key');
_mm.Read(pe,sizeof(TPassElement));
if(lowercase(_name)=lowercase(pe._name)) and(lowercase(pass)=lowercase(pe._pass)) then
result:=true;
end;
finally
_mm.Free;
end;
end;

использование:
ifCheckPassword(edit1.Text,edit2.Text) then


KilkennyCat   (2005-08-16 08:14:00) [11]


> [35] Германн ©   (16.08.05 02:02)


Да, надо было в БД переместить. Или ВыньАПИ.


Германн   (2005-08-16 02:02:00) [12]

Чёрт бы побрал того, кто разместил сию ветку в конфе "Начинающие"!


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

Кефир87 ©   (15.08.05 21:24) [33]

А можно инструкцию как сделать бинарный файл?
У меня идёт проверка пароля в Edit'е что-то типа этого:

if Edit1.Text <> 'Пароль' then ...


Кефир87   (2005-08-15 21:24:00) [14]


> 2. Хранить все в бинарном файле, там же проксореный пароль.

Ну я это и предлогаю. Конечно способ не надежный для серьезных проэктов. Я просто предпологаю что для программы автора ветки этого будет вполне достаточно 8)


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

Кефир87 ©   (15.08.05 12:25) [29]
Я тут вижу два более-менее приемлимых решения:
1. Хранить все в ини-файле, и там же хэш-значение пароля, потому что он не вызовет таких подозрений как кракозябры полученные в результате ксорения пароля.

2. Хранить все в бинарном файле, там же проксореный пароль.

Пантелеев Иван   (15.08.05 16:00) [31]

> Да я скачивал

А в папку с проектом положил?


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

Да я скачивал, mb5.pas но, это ничего не изменило, всеравно вылазин ошибка.


evvcom   (2005-08-15 12:50:00) [17]


> Да и потом можно задать минимальную длинну пароля. Например
> знаков 10...

Минимальное количество знаков никак не повлияет на сложность определения пароля, "скрытого" через xor (если только "взломщик", не будет подбирать его методом проб и ошибок, набирая его с клавиатуры :) )


Кефир87   (2005-08-15 12:25:00) [18]

xor алгоритм в данном случае не так уж плох. Я просто не думаю что будут злые недображелатели которые яростно захотят взломать программу автора, а xor поможет скрыть пароль от любопытных глаз 8) Да и потом можно задать минимальную длинну пароля. Например знаков 10...


Zeqfreed   (2005-08-15 11:14:00) [19]

Пантелеев Иван   (15.08.05 10:11) [27]

> Delphi пишет - что не возможно найти файл md5.dcu


Ммм, а ты скачал md5.pas и кинул его в папку проекта?

P.S.
Хеш, он же Хэш, он же Hash
Хэш-функция- ф-ция на входе получающая некоторые данные, и имеющая на выходе некоторое уникальное значение фиксированной длинны
Хэш-значение- значение возвращенное хэш-ф-цией


Пантелеев Иван   (2005-08-15 10:11:00) [20]

Я скачал примеры с http://www.fichtner.net/delphi/md5.delphi.phtmlно у меня не получается скомпилировать пример:
Delphi пишет - что не возможно найти файл md5.dcu

P.S. а что такое Хеш?


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

Наверх

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