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

Вниз

Как зашифровать ресурс ? Простенько и чтоб работало быстренько. З   Найти похожие ветки 

 
Кен   (2003-02-11 02:20) [0]

ащита от ламера. Сначала его шифрую. Потом гружу : Res := TResourceStream.Create(Hinstance, "myres", Pchar("bin")); Дальше его надо расшифровать и LoadFromStream , Res.Free; .

Только вот как сделать быструю шифровку расшифровку ? Может кто делал такое ? Сложность неважна. Достаточно xor всего с чем нибудь.


 
VID ©   (2003-02-11 02:29) [1]

посмотри
http://delphibase.endimus.com/?action=viewtopic&topic=mathcode
может найдёшь что нибудь интересное


 
Кен   (2003-02-11 04:24) [2]

Нашёл там функцию для проXORивания, но она ругается на инвалидный тип. Как бы его преобразовать ? Ресурс и pchar.


{ **** UBPFD *********** by delphibase.endimus.com ****
>> Кодировка по методу Вернама или xor кодировка

Кодировка по методу Вернама или xor кодировка
одна функция для кодирования и декодирования
Input - входная строка. При кодировании это незакодированная строка, при декодировнии это закодированная строка.
Key - слово ключ один и тот же в обоих случаях.

При совпадении символов во входной строке и строке ключе на выходе получается символ "#0".

Зависимости: Стандартные модули
Автор: Ru, DiVo_Ru@rambler.ru, Одесса
Copyright: DiVo 2002 creator Ru
Дата: 18 ноября 2002 г.
***************************************************** }

function VernamCoDec(Input,Key:pchar):pchar;
var
i,j:integer;
tmps,text:string;
begin
text:=Input;
for i:=1 to length(text) do
begin
if i>length(key) then j:=i mod length(key) else j:=i;
tmps:=tmps+chr((ord(text[i]))xor(ord(key[j])));
end;
result:=pchar(tmps);
end;


Пример использования:
Text:=edit1.text;
K:=edit2.text;
Edit3.text:=VernamCoDec(Text,K);


Закодировать:
Input:="Привет я РУ"; Key:="hello"; result:="ГуднйзHвH++";
Восстановить:
Input:="ГуднйзHвH++"; Key:="hello"; result:="Привет я РУ";


Как вот эту строчку нужно подбравить, чтобы заставить понять, что речь идёт о ресурсе ?

Res := VernamCoDec(Res,"Kod");


 
Кен   (2003-02-12 03:39) [3]

Подскажите пожалуйста, а ? Как подружить TResourceStream и pchar ? Была бы очень полезная функция ...


 
Кен   (2003-02-13 07:51) [4]

Короче это видно вопрос не для мастеров, а для гроссмейстеров.


 
ALex44   (2003-02-13 09:31) [5]

Perekryt" write/read v Stream"e i XORit" pobyteno. Hotya, shifrovanie chego by to ni bylo v prpgrame, eto mauvais tone.


 
Anatoly Podgoretsky ©   (2003-02-13 09:47) [6]

А ничего не надо затачивать, все нормально работает.

Во первых ты не даешь достаточной информации, например, что такое Res, приходится только догадываться, возможно это наследник от TCustomMemoryStream, но может быть и другое, кроме того ты привел обрывочные куски кода, не даюшие общего представления.
И ты после этого хочешь какой то ответ.

Этот вопрос не для гросмейстеров, а домашнее задание для чайников (или по твоей классификации) по умению наормально задать вопрос.


 
AlexanderSK ©   (2003-02-13 11:13) [7]

Я в свое время делал так:

S - любая вариация на тему Stream!

procedure MakeXor;
var
i: Integer;
Buf: Byte;
Cn: Integer;
FXorKeys: Array of Int64;
begin
//***Наполняем FXorKeys
if Length(FXorKeys) = 0 then
Exit;
S.Seek(0, soFromBeginning);
while True do
for i := 0 to High(FXorKeys) do
begin
Cn := S.Read(Buf, SizeOf(Buf));
Buf := Buf xor FXorKeys[i];
S.Seek(-SizeOf(Buf), soCurrent);
S.Write(Buf, Cn);
if S.Position = S.Size then
begin
S.Seek(0, soFromBeginning);
Exit;
end;
end;
end;


 
Кен   (2003-02-15 01:08) [8]

AlexanderSK ©
Спасибо !!!
Очень классно работает.
Единственное, чего бы было неплохо добавить, это какую нибудь фишку, чтобы удлинить ключ или как то его видоизменять, что ли. А то, если шифруется пустой файл. Например, из одних пробелов. То ключ виден невооружёным глазом. Но это в общем мелочи.
Спасибо ещё раз !


 
kirill_ru   (2003-02-15 22:48) [9]

прошу извинить ,но нельзя ли поподробнее(для чайника)...
Я не понял что эта процедура делает.
Ктонибудь может написать чтонибудь типа :
CodeRes(Res : TResourceStream): TResourceStream ;
DeCodeRes(Res : TResourceStream): TResourceStream ;

Ну или чтонибудь более понятное,
сильно не ругайте.

Интересный вопрос.


 
[NIKEL] ©   (2003-02-15 23:07) [10]

Кодирует и Декодирует строку используя расширенную XOR технику подобно
S-Coder (DDJ, Jan. 1990). Адгоритм достаточно безопасен, но все же, что бы сделать его еще более
безопасным, придерживайтесь следующим правилам:

1) Используйте длинные ключи.
2) Двойное или Тройное Кодирование с разными ключами. Что бы раскодировать,
сделайте тоже самое только с конца :)


procedure Crypt(var Source:Ansistring;const Key:AnsiString);
asm
Push ESI
Push EDI
Push EBX

Or EAX,EAX
Jz @Done
Push EAX
Push EDX
Call UniqueString
Pop EDX
Pop EAX
Mov EDI,[EAX]
Or EDI,EDI
Jz @Done
Mov ECX,[EDI-4]
Jecxz @Done
Mov ESI,EDX
Or ESI,ESI
Jz @Done
Mov EDX,[ESI-4]
Dec EDX
Js @Done
Mov EBX,EDX
Mov AH,DL
Cld
@L1:
Test AH,8
Jnz @L3
Xor AH,1
@L3:
Not AH
Ror AH,1
Mov AL,[ESI+EBX]
Xor AL,AH
Xor AL,[EDI]
Stosb
Dec EBX
Jns @L2
Mov EBX,EDX
@L2:
Dec ECX
Jnz @L1
@Done:
Pop EBX
Pop EDI
Pop ESI
end;


 
kirill_ru   (2003-02-16 19:52) [11]

>[NIKEL]
Круто,
Большое спасибо.



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

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

Наверх




Память: 0.49 MB
Время: 0.016 c
9-87233
NudeRaven
2002-09-18 20:39
2003.02.27
Как В Dx грузить файлы jpg,gif итд


14-87619
ctapik-net
2003-02-10 06:43
2003.02.27
TVCLScriptControl


3-87289
Mike_
2003-02-06 17:31
2003.02.27
Тормоза ADO SQL


6-87598
Scoip
2003-01-10 15:48
2003.02.27
Доступ в иНет


3-87283
volk
2003-02-08 18:42
2003.02.27
Не могу найти строку...