Показать сообщение отдельно
Старый 04.10.2011, 15:23   #2
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

Hint, ну тыб тут спросил, я бы выложил сорци своего недоделанного аналога l2encdec, и кстати для его написания мне публично доступной инфы из инета вполне хватило

вот мой модуль для шифрования:
delphi Код:
unit l2CryptRSA; interface procedure DecodeRSA(var data; const size: Integer); procedure EncodeRSA(var data; const size: Integer); function DecryptStr413(const data: string): string; implementation uses   ZLibEx; const   bufLen = 128; type   mpz_t = record     mp_alloc,     mp_size: Integer;     mp_d:    Pointer;   end;   TRSABlocks = array[0..0] of array[1..bufLen] of Byte; const   //priv. exponent (d)   priv_key: array[0..127] of Char =       #$65#$DE#$C1#$81#$50#$95#$1E#$C9#$3E#$22#$DB#$C7#$16#$B8#$2D#$6F+       #$FC#$E2#$46#$F7#$53#$85#$A2#$5C#$FE#$5D#$AD#$18#$76#$95#$A1#$31+       #$B6#$C1#$93#$D4#$CB#$62#$15#$8C#$9A#$DA#$6D#$3A#$25#$A7#$43#$4E+       #$F0#$C2#$14#$1C#$3D#$FE#$C6#$63#$82#$1F#$54#$AE#$D9#$43#$10#$83+       #$4D#$B3#$77#$0A#$E1#$2F#$35#$D7#$9D#$90#$F0#$72#$F2#$0B#$DD#$4C+       #$12#$5F#$1D#$9D#$64#$D2#$43#$66#$B8#$32#$7F#$A2#$FC#$F8#$07#$6A+       #$4C#$50#$5B#$40#$C4#$E6#$D3#$38#$78#$1D#$29#$00#$E4#$76#$97#$71+       #$1E#$84#$8E#$3C#$06#$75#$5C#$14#$86#$70#$D4#$98#$D7#$C2#$B4#$30;   e: mpz_t = (mp_alloc: 32; mp_size: 32; mp_d: @priv_key[0]);   //modulo (n)   modulo: array[0..127] of Char =       #$39#$20#$AE#$94#$60#$C6#$D4#$13#$64#$D2#$93#$AA#$A3#$C6#$A4#$C3+       #$67#$AE#$69#$D0#$B3#$C3#$67#$B5#$AB#$81#$88#$10#$D2#$F1#$7A#$70+       #$E3#$5D#$20#$AE#$5B#$B6#$7B#$D8#$04#$56#$C8#$67#$C2#$29#$01#$07+       #$19#$93#$30#$43#$FA#$ED#$79#$46#$3E#$2F#$C0#$B1#$4E#$43#$D9#$1F+       #$FD#$9B#$F6#$83#$0A#$89#$C0#$72#$7D#$5D#$C5#$95#$34#$32#$16#$8F+       #$C1#$A5#$B1#$7B#$C8#$91#$CE#$A1#$3D#$65#$B3#$88#$62#$44#$93#$55+       #$63#$57#$87#$9B#$AF#$6D#$55#$89#$E2#$B1#$B8#$55#$FC#$09#$2E#$3D+       #$F4#$69#$58#$12#$CF#$1A#$8A#$06#$44#$65#$01#$5C#$DE#$D6#$B4#$75;   m: mpz_t = (mp_alloc: 32; mp_size: 32; mp_d: @modulo[0]);   //pub. exponent (e)   pub_key = $1d;   gmpdll = 'libgmp-3.dll'; procedure mpz_init(var Dest: mpz_t); cdecl;   external gmpdll name '__gmpz_init'; procedure mpz_clear(var Dest: mpz_t); cdecl;   external gmpdll name '__gmpz_clear'; procedure mpz_powm(var Dest: mpz_t; const Base, Exponent, Modulus: mpz_t); cdecl;   external gmpdll name '__gmpz_powm'; procedure mpz_powm_ui(var Dest: mpz_t; var Base: mpz_t; Exponent: Cardinal;   const Modulus: mpz_t); cdecl;   external gmpdll name '__gmpz_powm_ui'; procedure mpz_import(var rop: mpz_t; count, order, size, endian,   nails: Cardinal; const op); cdecl;   external gmpdll name '__gmpz_import'; procedure mpz_export(var rop, count; order, size, endian,   nails: Cardinal; const op: mpz_t); cdecl;   external gmpdll name '__gmpz_export'; var   r,d: mpz_t; procedure RSA_BlockDec(var data); var   count: Cardinal; begin   mpz_import(d,bufLen,1,1,0,0,data);   mpz_powm_ui(r,d,$1d,m);   count:=32;   mpz_export(data,count,1,4,1,0,r); end; procedure RSA_BlockEnc(var data); var   count: Cardinal; begin   mpz_import(d,bufLen,1,1,0,0,data);   mpz_powm(r,d,e,m);   count:=32;   mpz_export(data,count,1,4,1,0,r); end; procedure DecodeRSA(var data; const size: Integer); var   i: Integer;   dt: TRSABlocks absolute data; begin   for i:=0 to size div bufLen - 1 do RSA_BlockDec(dt[i]); end; procedure EncodeRSA(var data; const size: Integer); var   i: Integer;   dt: TRSABlocks absolute data; begin   for i:=0 to size div bufLen - 1 do RSA_BlockEnc(dt[i]); end; function UnPack(const data; const size: Integer): string; var   i,k: Integer;   dt: TRSABlocks absolute data; begin   Result:='';   for i:=0 to size div bufLen - 1 do begin     k:=Length(Result);     SetLength(Result,k+dt[i][3]);     Move(dt[i][(128-dt[i][3])and $7C],Result[k+1],dt[i][3]);   end; end; function Pack(const data: string): string; var   i,k: Integer; begin  { TODO : create Pack function } end; function Decompress(const data: string): string; begin   Result:=ZDecompressStr(data); end; function DecryptStr413(const data: string): string; begin   Result:=data;   DecodeRSA(Result[1],Length(Result));   Result:=Copy(UnPack(Result[1],Length(Result)),5,Length(Result));   Result:=Decompress(Result); end; initialization   mpz_init(d);   mpz_init(r); finalization   mpz_clear(d);   mpz_clear(r); end.

Добавлено через 3 минуты
Цитата:
Сообщение от xkor Посмотреть сообщение
и кстати для его написания мне публично доступной инфы из инета вполне хватило
а хотя не, вру, ключи я извлекал из l2encdec запустив на отладку через ollydbg
__________________
Я здесь практически не появляюсь!, Skype - ikskor

Последний раз редактировалось xkor, 04.10.2011 в 15:23. Причина: Добавлено сообщение
xkor вне форума   Ответить с цитированием
За это сообщение xkor нажился 2 спасибками от: