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

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

Ctrl+Del в DBGrid [D6, Win2k]


Страницы:   1 2

Teuton ©   (2005-03-10 13:10:00) 

Здравствуйте.
Известно, что в DBGrid встроено сочетание клавишь Ctr+Del, которое удаляет запись. Помогите пожалуйста советом, как запретить пользователю удалять запись таким образом, как заблокировать это?

Заранее благодарю!


Anatoly Podgoretsky   (2005-03-11 12:11:00) [1]

Teuton ©   (11.03.05 09:48) [22]
Сверяй с сигнатурой, один из вариантов этого термина ХЕШ.
Для данного случая я бы порекомендовал CRC32 или CRC16, поскольку тогда легко хранить где угодно, в базе, в реестре, в ини и т.д.


Bronco   (2005-03-11 10:58:00) [2]


> Teuton ©   (11.03.05 10:50) [25]


> не могли бы вы мне пояснить как это делать

Ну, если упрощенно, то примерно так:
Есть некая функция, вычисляющая хэш-сумму от твоей строки с паролем. Пример функции приведен в [19] ссылке. Вычисляешь эту хэш-сумму и записываешь в таблицу БД.
Затем, когда юзер вводит пароль, чтобы зайти в программу, твоя программа предварительно вычисляет хэш от введенного пароля и сравнивает с тем значением, которое уже хранится в базе. Если совпало, значит пускаем в программу


Teuton   (2005-03-11 10:50:00) [3]

>>Bronco

Да кажется, я вас понял ;) Уж простите за навязчивость, но не могли бы вы мне пояснить как это делать?

Заранее благодарю!


Bronco   (2005-03-11 10:33:00) [4]

извиняюсь

> Хэш, в отличие от пароля,

читать как
Хеш, в отличие от зашифрованного пароля


Bronco   (2005-03-11 10:32:00) [5]


> Teuton ©   (11.03.05 08:53) [20]


> А что если вписывать в таблицу зашифрованный пароль? То
> есть значение в таблицу будет записано функцией типа crypt()
>

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


Teuton   (2005-03-11 09:48:00) [6]

>>Anatoly Podgoretsky

Как же его не хранить? А с чем сверять введенный пароль? ;)


Anatoly Podgoretsky   (2005-03-11 09:07:00) [7]

Не храни пароль совсем.


Teuton   (2005-03-11 08:53:00) [8]

>>stakan Vlad
Спасибо вам большое за советы, друзья, но слишком хорошего мнения о моих познаниях в программировании...
Что такое MD5, XOR и как работать с байтами я вообще не знаю :( А Слово хэш лишь напоминает мне о моиг потугах работать с массивом в перле и не более того :(

Может быть что-нибудь попроще? Да, я понимаю, что DBF-файл уязвим и может быть спокойно даже в нортоне просмотрен. А что если вписывать в таблицу зашифрованный пароль? То есть значение в таблицу будет записано функцией типа crypt() как в перле? Есть ли такая функция в Дельфи?

Спасибо еще раз.


Vlad   (2005-03-10 17:32:00) [9]


> Teuton ©   (10.03.05 17:05) [16]

Если работаешь с базой, то пароль резоннее хранить в таблице.
Правда такая защита рассчитана на полного ламера, поскольку файл DBF сам по себе можно открыть хоть Excel'ем, смотреть, изменять данные и делать с ними все что угодно.
Хранить пароль лучше в виде хеш-суммы (напр. MD5)
вот пример исходников вычисления MD5 на Delphi
http://delphibase.spb.ru/?action=viewfunc&topic=mathcode&id=10243

При этом, в программе старайся избегать проверки пароля типа:
if CheckPassword(...) then  
взламывается за 5 минут.
Придумай что нибудь посложнее.


stakan   (2005-03-10 17:18:00) [10]

>>Teuton  
Есть простейший способ шифрования, но любопытного юзера остановит. Разбиваешь пароль на символы (байты), делаешь каждому символу XOR с какой нибудь битовой маской (любым символом), на выходе получаешь левый символ. Расшифровка - так же: берёшь символ, XOR с той же маской, с какой шифровал - получаешь исходный символ.


markers   (2005-03-10 17:06:00) [11]

А DBF у нас что, не база?


Teuton   (2005-03-10 17:05:00) [12]

>>stakan

У меня простое приложение учета товаров, работающее локально с DBF-файлом.


markers   (2005-03-10 17:05:00) [13]

То Teuton
Короче пиши в приват либо на ящик в инфо либо
admin(ЗаСпАм)@sibdisnet.ru
Естественно (ЗаСпам) убери когда писать будешь...


markers   (2005-03-10 17:02:00) [14]

ту Стакан
Чё-то я там не замечал?
Да и есть хорошая библиотечка (Фришная) которая может и в MD5 и BlowFish и еже сним...


stakan   (2005-03-10 16:59:00) [15]

>> Teuton
 Вариантов много, смотря какое приложение.
Если работа с БД то пароли можно хранить в самой БД (создавать пользователя базы с паролем, тогда шифрованием займётся СУБД) или завести отдельную таблицу в базе для хранения пользователей с паролями. Насчёт алгоритмов шифрования, то тут я не спец. Если приложение обычное, то можно в реестре, опять же шифруя пароль. Насколько я помню есть компоненты (из RXLib) которые пишут в реестр уже в зашифрованом виде. И т.д.


markers   (2005-03-10 16:54:00) [16]

Шифровать писать свою систему щифрования либа юзать компоненты. И ещё Разные типы шифрования существуют... Если хочешь подробнее пиши в приват..


Teuton   (2005-03-10 16:44:00) [17]

>>stakan

Спасибо вам большое! Пользуясь случаем, хочу спросить вас, каков принцип сохранения паролей (с возможностью програмного изменения пароля) в Дельфи, но так, чтобы сохранять пароль не в текстовом файле, доступном всем, а в каком-нибудь зашифрованном файле?

Заранее благодарю!


stakan   (2005-03-10 16:15:00) [18]

Можно так
procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
 if (ssCtrl in Shift) and (Key = VK_DELETE) then
 begin
   ShowMessage('Нельзя!!!');
   Abort
 end;
end;


Teuton   (2005-03-10 16:11:00) [19]

>>markers

Нет это не помогает :(


markers   (2005-03-10 15:56:00) [20]

А Read-Only не пробовал?


Страницы:   1 2

Наверх

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