Форум: "Основная";
Текущий архив: 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