Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.02.27;
Скачать: [xml.tar.bz2];

Вниз

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

 
Кен   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.007 c
1-87438
nedlon
2003-02-18 16:41
2003.02.27
С Builder to Delphi


3-87264
mate
2003-02-08 11:49
2003.02.27
Кодировка в ADO


1-87460
Николай В.
2003-02-18 15:26
2003.02.27
DKLib (PGP)


8-87576
VVVaaa
2002-11-12 11:32
2003.02.27
Проблемка с выводом на image


1-87548
Checist [root]
2003-02-17 11:17
2003.02.27
Доступ к сетевому диску





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