Главная страница
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
3-87253
Sava
2003-02-11 17:02
2003.02.27
Передать параметр в UpdateSQL


3-87322
alexander_ua
2003-02-10 14:44
2003.02.27
Распределенная БД


8-87574
tga
2002-11-11 13:59
2003.02.27
Как создать окно произвольной формы?


3-87268
Andrio
2003-02-08 15:33
2003.02.27
Триггер на SQL для IB6


14-87649
Тень
2003-01-22 15:40
2003.02.27
Как увидеть Win95-98 под ХР