Форум: "Основная";
Текущий архив: 2003.03.06;
Скачать: [xml.tar.bz2];
ВнизДоброго времени суток. Может кто знает как нормально криптовать Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.01 c