Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.06;
Скачать: CL | DM;

Вниз

Доброго времени суток. Может кто знает как нормально криптовать   Найти похожие ветки 

 
mmmh   (2003-02-25 23:29) [0]

пишу код котроый криптует только очень криво. var
Form1: TForm1;
hIniLockedFile: Cardinal;
OfStruct : _OfStruct;

const
csCryptFirst = 20;
csCryptSecond = 230;
csCryptHeader = "Crypted";

type
ECryptError = class(Exception);


implementation

{$R *.dfm}


function CryptString(Str:String):String;
var
I : Integer;
Clen : Integer;
begin
clen := Length(csCryptHeader);
SetLength(Result, Length(Str)+clen);
Move(csCryptHeader[1], Result[1], clen);
For i := 1 to Length(Str) do
begin
if i mod 2 = 0 then
Result[i+clen] := Chr(Ord(Str[i]) xor csCryptFirst)
else
Result[i+clen] := Chr(Ord(Str[i]) xor csCryptSecond);
end;
end;

function UnCryptString(Str:String):String;
var
I : Integer;
Clen : Integer;
begin
Clen := Length(csCryptHeader);
SetLength(Result, Length(Str)-Clen);
If Copy(Str, 1, clen) <> csCryptHeader then
raise ECryptError.Create("Файл поврежден!");
For i := 1 to Length(Str)-clen do
begin
if (i) mod 2 = 0 then
Result[i] := Chr(Ord(Str[i+clen]) xor csCryptFirst)
else
Result[i] := Chr(Ord(Str[i+clen]) xor csCryptSecond);
end;
end;

Procedure CryptIniFile;
var
S: TStringList;
I: Integer;
begin
S := TStringList.Create;
S.LoadFromFile(ExtractFileDir(Application.Exename) + "Test.ini");
For I := 0 to S.Count - 1 do
S.Strings[I] := CryptString(S.Strings[I]);
S.SaveToFile(ExtractFileDir(Application.Exename) + "Test.ini");
end;

Procedure DecryptIniFile;
var
S: TStringList;
I: Integer;
begin
if not FileExists(ExtractFileDir(Application.Exename) + "Test.ini") then Exit;
S := TStringList.Create;
S.LoadFromFile(ExtractFileDir(Application.Exename) + "Test.ini");
For I := 0 to S.Count - 1 do
S.Strings[I] := UnCryptString(S.Strings[I]);
S.SaveToFile(ExtractFileDir(Application.Exename) + "Test.ini");
end;
procedure SaveCaption;
var
IniFile: TIniFile;
begin
{Отключаем защиту файла}
CloseHandle(hIniLockedFile);
{Резервное время для оключения}
Sleep(1000);
IniFile := TIniFile.Create(ExtractFilePath(Application.Exename) + "Test.ini");
IniFile.WriteString("MainOptions", "FormCaption", Form1.Caption);
IniFile.Free;
{После сохранения, заново ставим защиту}
hIniLockedFile := OpenFile(PChar(ExtractFileDir(Application.Exename) + "Test.ini"), OfStruct, OF_Share_Exclusive);
end;

procedure GetCaption;
var
IniFile: TIniFile;
begin
{Расширофка конфигурационного файла}
DeCryptInIFile;
Sleep(1000);
IniFile := TIniFile.Create(ExtractFilePath(Application.Exename) + "Test.ini");
Form1.Caption := IniFile.ReadString("MainOptions", "FormCaption", "");
IniFile.Free;
{Устанавливаем защиту}
hIniLockedFile := OpenFile(PChar(ExtractFileDir(Application.Exename) + "Test.ini"), OfStruct, OF_Share_Exclusive);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
GetCaption;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
SaveCaption;
CloseHandle(hIniLockedFile);
CryptInIFile;
end;

данный код кодирует но ... если в проге глюк то файл не закриптовывается. Очень надо просто так раскриптовать в массив загрузить все элементы в формы и все.


 
mrcat ©   (2003-02-26 00:00) [1]

и чего надеешся защитить таким "кодированием"?


 
Мыш   (2003-02-26 02:33) [2]

А ты это сам писал или взял готовый?



Страницы: 1 вся ветка

Текущий архив: 2003.03.06;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.014 c
1-17172
Кило
2003-02-24 09:24
2003.03.06
Как передать в Rave Report картинку не из Базы Данных ?


6-17224
Spartak
2003-01-15 14:22
2003.03.06
Привет мастера. как вам


14-17357
Siv Soft
2003-02-18 14:37
2003.03.06
TAudio - документация


14-17310
MsGuns
2003-02-16 14:28
2003.03.06
Средняя школа


3-16919
Chainik2003
2003-02-15 19:00
2003.03.06
Выборка из нескольких таблиц