Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.55 MB
Время: 0.036 c
6-17252
Cosmic
2003-01-16 12:21
2003.03.06
Winsock-сервер


14-17328
igor1984
2003-02-08 21:53
2003.03.06
Вопрос по lan


1-17146
ofp
2003-02-20 23:49
2003.03.06
Динамический набор данных + коректно сохранить + загрузить !


1-17093
kolesya
2003-02-21 17:55
2003.03.06
RichEdit, который


3-16928
MAxiMum
2003-02-16 16:17
2003.03.06
Программное создание пользователя Interbase





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский