Вернуться   CoderX :: Forums > Основные форумы > Программинг
Войти через OpenID

Программинг Форум для тем связанных с программированием

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
 
 
Опции темы Опции просмотра
Старый 28.04.2008, 13:49   #5
Местный
 
Аватар для PanAm
 
Регистрация: 18.01.2008
Сообщений: 286
Сказал Спасибо: 24
Имеет 133 спасибок в 80 сообщенях
PanAm
По умолчанию

нет, в newxor.dpr
я что-то в таком духе можно попробывать
delphi Код:
type   TXorCoding = class(TCodingClass)   private     keyLen: Byte;     CryptoInit: Boolean; //Добавил новый флаг   public     constructor Create;     procedure InitKey(const XorKey; Interlude: Boolean = False);override;     procedure DecryptGP(var Data; const Size: Word);override;     procedure EncryptGP(var Data; const Size: Word);override;   end; constructor TXorCoding.Create(); begin   FillChar(GKeyS[0],SizeOf(GKeyS),0);   FillChar(GKeyR[0],SizeOf(GKeyR),0);   keyLen := 0;   CryptoInit := false; End; procedure TXorCoding.DecryptGP(var Data; const Size: Word); var   k:integer;   pck:array[0..$4FFF] of Byte absolute Data; begin   if pck[0] := 0 then begin //вставил проверку     CryptoInit := true; //поднял флаг     InitKey(pck[2]); //устанавил новый ключ шифрования, InitKey(pck[2], true); для интрерлюда     exit; //дальнейшая обработка не нужна, выхел   end;   for k:=size-1 downto 1 do     pck[k]:=pck[k] xor GKeyR[k and keyLen] xor pck[k-1];   if size<>0 then pck[0]:=pck[0] xor GKeyR[0];   Inc(PLongWord(@GKeyR[keyLen-7])^,size); end; procedure TXorCoding.EncryptGP(var Data; const Size: Word); var   i:integer;   pck:array[0..$4FFF] of Byte absolute Data; begin   if CryptoInit then begin  //это был CryptoInit     CryptoInit := false; //сбосил флаг     exit; //шифрация не требуется - вышел   end;   if size<>0 then pck[0]:=pck[0] xor GKeyS[0];   for i:=1 to size-1 do     pck[i]:=pck[i] xor GKeyS[i and keyLen] xor pck[i-1];   Inc(PLongWord(@GKeyS[keyLen-7])^,size); end; procedure TXorCoding.InitKey(const XorKey; Interlude: Boolean = False); const   KeyConst: array[0..3] of Byte = ($A1,$6C,$54,$87);   KeyIntrl: array[0..7] of Byte = ($C8,$27,$93,$01,$A1,$6C,$31,$97); var key2:array[0..15] of Byte; begin   if Interlude then begin     keyLen:=15;     Move(XorKey,key2,8);     Move(KeyIntrl,key2[8],8);   end else begin     keyLen:=7;     Move(XorKey,key2,4);     Move(KeyConst,key2[4],4);   end;   Move(key2,GKeyS,16);   Move(key2,GKeyR,16); end;
код не проверял, даже синтаксис...
просто пример, как обойти смену ключа.
PanAm вне форума   Ответить с цитированием
 

  CoderX :: Forums > Основные форумы > Программинг



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 20:54.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!