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

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

Функция для шифрования пароля


tower ©   (2005-08-10 14:50:00) 

Здраствуйте.
У меня в ИНИ файле сохраняется пароль к базе данных. Хочу его както зашифровать от "крутых юзеров".
Если есть у когото простая функция шифрования( такая чтобы и водну и в другую сторону) закиньте сюда.

Я сам одну написал. Только она шифрует так что иногда в зашифрованной строке попадаются служебные символы (перевод строки и др.) , и тогда не читается с ИНИ файла.
Нужно чтобы в зашифрованном варианте были только "нормальные" символы.


afanasic   (2005-08-11 09:55:00) [1]

А что ты будешь делать, если крутой юзер напишет на месте пароля имя своей любимой девушки? Храни в бинарнике, меньше проблем тебе и остальным юзерам.


Думкин   (2005-08-11 07:23:00) [2]

а потом чел увольняется к конкурентам . И сдает всю базу. Фи.


Defunct   (2005-08-11 02:28:00) [3]

> Alexander Panov

В любом случае, не пребегая к аппаратным ключам избежать хранения "Пароля(ключа)" в любом виде на диске не удастся. Хоть хеш, хоть CRC образы ключа дадут возможность
1. анализа.
2. удаления(сброса) пароля.

Хранить ключи от базы лучше в самой базе, но она тоже на диске ;>


IncRed   (2005-08-11 02:14:00) [4]

поищи пакет dcrypt - там около десятка алгоритмов


Alexander Panov   (2005-08-10 20:35:00) [5]

Пароль(ключ) в любом виде не должен храниться на диске.


TStas   (2005-08-10 19:38:00) [6]

А шифр пляшушие человечки по сути вообще шифром не явлется, а это простая замена букв. Подобные вещь если есть достаточно большой текст и известно, на каком языке он написан вскрываются в домашних условиях простым частотным анализом, то есть подсчетом, сколько раз какой символ встречается. По сути своей шифр Цезаря есть обычная смена алфавита. Не вскрывается в лоб димамический сдвиг, т.о. шифр по строке.
Совсем другой вопрос, на сколько это все имеет практическое значение.


TStas   (2005-08-10 19:27:00) [7]

Вот алгоритм, котрый шифрует текст в тект. Насколько мне известно, внятного способа взлома просто нет

Идея здесь простая, шифр "по строчке"
unit CodeUnit;

interface
uses classes;

function convertCodeText(const srcText:TStringList; const keyText:TStringList; mode:Boolean):TStringList; //расшифровывает/зашифровывает текс. mode=true - зашифровать, false - расшифровать

implementation

const
 extABC=#39#9' !"#$%&()*+,-./0123456789:;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7FЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—?™ љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя';

function GetSymNum(C:Char):Byte;
var i:Byte;
begin
Result:=0;
for i:=1 to Length(extABC) do
 begin
 if c=extABC[i] then
   begin
   Result:=i;
   exit;
   end;
 end;
end;

function encode(str:String; keyText:String):String; //Шифрует строку
var
 s1:String;
 i, ln, extLn:Integer;
 b:Integer;
begin
extLn:=Length(extABC);
ln:=Length(str);
s1:=keyText; //Строка, повторяющая шифрующую, но нужной длинны
while Length(s1)extLn then b:=b-extLn; //Если b>длтнны алфавита, то вычитаю длинну алфавита
 Result:=Result+extABC[b];
 end;
end;

function decode(str:String; keyText:String):String; //Расшифровывает строку
var
 s1:String;
 i, ln, b, extLn:Integer;

begin
extLn:=Length(extABC);
ln:=Length(str);
s1:=keyText; //Строка, повторяющая шифрующую, но нужной длинны
while Length(s1)


Fay   (2005-08-10 16:24:00) [8]

2 Digitman ©   (10.08.05 16:08) [8]
>> Ш.Холмс был далек от программирования
а ещё Баба Яга и Хороший Мент...


Digitman   (2005-08-10 16:08:00) [9]


> tower   (10.08.05 15:43) [4]
> "крутой юзер" - это человек, который не умеет программировать,
> а значит расшифровать пароль


Можно не уметь программировать, но иметь хорошо развитое логическое ассоциативное мышление ... Ш.Холмс был далек от программирования (в нашем соврем. понимании), однако "Пляшущие человечки", как известно, оказались для него вполне посильной задачей.


> Программист сразу может определить алгоритм шифрования


да ну ?!

прямо так вот с разбегу и определит ?


> У меня в ИНИ файле сохраняется пароль к базе данных


храня такого рода конфид.данные в текст.виде ты сам даешь повод "крутому юзеру" заняться известного рода "исследованиями" ... прямо-таки провоцируешь его .. нет бы хранить конфид.данные в бин.виде ! ... у большинства "крутых юзеров" при этом вряд ли возникнет желание заниматься такими "исследованиями"


tower   (2005-08-10 15:53:00) [10]

Спасибо Alexander Panov.
Правда мне на С++ нужно. Но там кода мало. Перепишу.


WondeRu   (2005-08-10 15:46:00) [11]

закидывай в файл не пароль, а md5


Alexander Panov   (2005-08-10 15:45:00) [12]

tower   (10.08.05 15:43) [4]
http://www.podgoretsky.com/cgi-bin/dlcounter/npscnt?file=http://podgoretsky.com/ftp/Language/nps/crypt32.zip&file_id=crypt32


tower   (2005-08-10 15:43:00) [13]

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

Это мое определение . Придираться не надо :) .

А алгоритм цезаря начинаю искать.


Igor_thief   (2005-08-10 15:32:00) [14]

В гугле поиищи алгоритм Цезаря. Реализуется очень просто. Если не найдешь, то потом скину тебе пример.


ANB   (2005-08-10 15:02:00) [15]


> tower   (10.08.05 14:50)
- в 16-ричный формат зашифрованную строку переведи


Digitman   (2005-08-10 14:56:00) [16]


> "крутых юзеров"


обозначь , что есть "крутой юзер" ..


Наверх

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