Консультация № 21668
02.06.2005, 14:38
0.00 руб.
0 4 4
Добрый день.
Подскажите, как можно шифровать при сохранении в ini файл, ну и соответственно расшифровывать при загрузке.
Код следующий:
procedure TForm1.FormCreate(Sender: TObject);
var
ini: TIniFile;
begin
ini := TIniFile.Create(GetAppPath+‘options.ini‘);
try
with ini do
begin
Width := ReadInteger(‘Form‘, ‘Width‘, 343);
Height := ReadInteger(‘Form‘, ‘Height‘, 178);
Left := ReadInteger(‘Form‘, ‘Left‘, 424);
Top := ReadInteger(‘Form‘, ‘Top‘, 142);
Edit2.text:=ReadString(‘Pause‘,‘Enter‘,‘‘);
Edit3.text:=ReadString(‘Pause‘,‘Search‘,‘‘);
Edit4.text:=ReadString(‘Pause‘,‘Exit‘,‘‘);
end;
finally
ini.Free;
end;
end;
-----------------------------------------------------------------
procedure TForm1.FormDestroy(Sender: TObject);
var
ini: TIniFile;
begin
ini := TIniFile.Create(GetAppPath+‘options.ini‘);
try
with ini do
begin
if WindowState <> wsMaximized then
begin
WriteInteger(‘Form‘, ‘Width‘, Width);
WriteInteger(‘Form‘, ‘Height‘, Height);
WriteInteger(‘Form‘, ‘Left‘, Left);
WriteInteger(‘Form‘, ‘Top‘, Top);
end;
begin
WriteString(‘Pause‘,‘Enter‘,Edit2.text);
WriteString(‘Pause‘,‘Search‘,Edit3.text);
WriteString(‘Pause‘,‘Exit‘,Edit4.text);
end;
end;
finally
ini.Free;
end;
end;
С Уважением, Алексей

Обсуждение

Неизвестный
02.06.2005, 17:08
общий
это ответ
Здравствуйте, Комов!
Пишешь функции для шифрования:
function shifr(s:string):string;
var i:integer;
res:string;
begin
For i:=0 to length(s)-1 do
begin
res:=res+succ(succ(s[i]));
end;
end;
Ну и для расшифрофки:
function deshifr(s:string):string;
var i:integer;
res:string;
begin
For i:=0 to length(s)-1 do
begin
res:=res+pred(pred(s[i]));
end;
end;
Толко желательно что-нибудь посложней.
Ну и используеш их:
WriteString(‘Pause‘,‘Enter‘,shifr(Edit2.text));
Edit2.text:=deshifr(ReadString(‘Pause‘,‘Enter‘,‘‘));
Если надо, у меня есть модули для шифрования по алгоритму Cast128 и ещё какому-то. Могу выслать(сам я пока ими не пользовался).
Неизвестный
02.06.2005, 17:53
общий
это ответ
Здравствуйте, Комов!
Могу посоветовать использовать компоненты шифрования LockBox, зачем изобретать велосипед...
Неизвестный
02.06.2005, 21:08
общий
это ответ
Здравствуйте, Комов!
попробуй пользоваться xor-ом
в приложении приведен код функции, выполняющей шифрование по xor 5, т.е. статически. Динамическое значение xor-a сделать несложно, например, вставьте вместо 5 переменную i. Но в таком случае избегайте строк длиннее 255 символов


Приложение:
function encode(str: string): string;vari: integer;c, x: byte;beginif str = ‘‘ then exit; for i := 1 to Length(str) do begin c := Ord(str[i]); x := c xor 5; result := result + chr(x) end;end;{если в функцию передать исходную строку, тополучим шифрованную, а если дадим шифрованную,получим исходную}
давно
Мастер-Эксперт
425
4118
03.06.2005, 06:38
общий
это ответ
Здравствуйте, Комов!
Самый простой способ шифрования - применять логическую операцию XOR:
Const
text = ‘MyText‘; {Незашифрованый текст}
password = ‘t‘; {Это для ясности, а можно и усложнить длинным паролем}
var
s1: string; {Уже зашифрованая строка}
s2: string; {Расшифрованая строка}
i: integer;
Begin
{Зашифровка}
For i:=1 To Length(text) do
s1:=text[i] xor password;
{Расшифровка}
For i:=1 to Length(s1) do
s2:=s[i] xor password;
End;
Если хотите зашифровывать более сложно (но не значит более надежно), то Вам необходимо почитать материалы по алгоритмам шифрования. Например вот описание алгоритма шифрования по госстандарту ГОСТ 28147-89:
http://www.enlight.ru/crypto/articles/vinokurov/gost_i.htm
Его применение приветствуется и в тоже время нет никаких юридических препятствий для его коммерческого (ну и некоммерческого тоже) использования.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Форма ответа