Главная страница
    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.45 MB
Время: 0.009 c
7-17406
ALXSAM
2003-01-08 16:04
2003.03.06
Как создать компонент в ходе выполнения программы


7-17417
Suroga
2003-01-09 11:35
2003.03.06
Сигналы RTS / DTR


6-17231
Rater2
2003-01-17 12:21
2003.03.06
Как через Indy FTP узнать процент закаченности файла


4-17462
xGrey
2003-01-17 11:51
2003.03.06
CreateProcess и “DOS архиватор”.


1-17076
Anatoliy
2003-02-25 17:28
2003.03.06
Работа с MSWord через OLE





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский