Главная страница
    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.008 c
8-17212
GROL
2002-11-20 16:29
2003.03.06
Изменение изображения на экране


1-16986
dimdimka
2003-02-24 14:54
2003.03.06
Как искать тект в документе Word?


14-17358
Roman Go
2003-02-18 11:20
2003.03.06
Сколько стоит MS SQL Server 2000


1-17193
Nehto
2003-02-24 14:08
2003.03.06
Kak videlit text v Edit-componente s zadannogo simvola


4-17431
viper
2003-01-17 16:35
2003.03.06
ExtractIcon





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