Advertisement
thebad_cb

EncDec_WYD

Jan 28th, 2015
235
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 5.34 KB | None | 0 0
  1. unit EncDec_WYD;
  2.  
  3.  
  4. interface
  5.  
  6. Type Enc_Dec = Class
  7.   public
  8.     procedure Encrypt(Src:array of byte; Len:Word);
  9.     function Decrypt(Src:array of byte; Len:Word): boolean;
  10. end;
  11.  
  12. implementation
  13.  
  14. Uses Main, MMSystem, SysUtils;
  15.  
  16. var
  17. EncDecKeys: array[0..511] of Byte =
  18.    ($84, $87, $37, $D7, $EA, $79, $91, $7D, $4B, $4B, $85, $7D, $87, $81, $91, $7C,
  19.     $0F, $73, $91, $91, $87, $7D, $0D, $7D, $86, $8F, $73, $0F, $E1, $DD, $85, $7D,
  20.     $05, $7D, $85, $83, $87, $9C, $85, $33, $0D, $E2, $87, $19, $0F, $79, $85, $86,
  21.     $37, $7D, $D7, $DD, $E9, $7D, $D7, $7D, $85, $79, $05, $7D, $0F, $E1, $87, $7E,
  22.     $23, $87, $F5, $79, $5F, $E3, $4B, $83, $A3, $A2, $AE, $0E, $14, $7D, $DE, $7E,
  23.     $85, $7A, $85, $AF, $CD, $7D, $87, $A5, $87, $7D, $E1, $7D, $88, $7D, $15, $91,
  24.     $23, $7D, $87, $7C, $0D, $7A, $85, $87, $17, $7C, $85, $7D, $AC, $80, $BB, $79,
  25.     $84, $9B, $5B, $A5, $D7, $8F, $05, $0F, $85, $7E, $85, $80, $85, $98, $F5, $9D,
  26.     $A3, $1A, $0D, $19, $87, $7C, $85, $7D, $84, $7D, $85, $7E, $E7, $97, $0D, $0F,
  27.     $85, $7B, $EA, $7D, $AD, $80, $AD, $7D, $B7, $AF, $0D, $7D, $E9, $3D, $85, $7D,
  28.     $87, $B7, $23, $7D, $E7, $B7, $A3, $0C, $87, $7E, $85, $A5, $7D, $76, $35, $B9,
  29.     $0D, $6F, $23, $7D, $87, $9B, $85, $0C, $E1, $A1, $0D, $7F, $87, $7D, $84, $7A,
  30.     $84, $7B, $E1, $86, $E8, $6F, $D1, $79, $85, $19, $53, $95, $C3, $47, $19, $7D,
  31.     $E7, $0C, $37, $7C, $23, $7D, $85, $7D, $4B, $79, $21, $A5, $87, $7D, $19, $7D,
  32.     $0D, $7D, $15, $91, $23, $7D, $87, $7C, $85, $7A, $85, $AF, $CD, $7D, $87, $7D,
  33.     $E9, $3D, $85, $7D, $15, $79, $85, $7D, $C1, $7B, $EA, $7D, $B7, $7D, $85, $7D,
  34.     $85, $7D, $0D, $7D, $E9, $73, $85, $79, $05, $7D, $D7, $7D, $85, $E1, $B9, $E1,
  35.     $0F, $65, $85, $86, $2D, $7D, $D7, $DD, $A3, $8E, $E6, $7D, $DE, $7E, $AE, $0E,
  36.     $0F, $E1, $89, $7E, $23, $7D, $F5, $79, $23, $E1, $4B, $83, $0C, $0F, $85, $7B,
  37.     $85, $7E, $8F, $80, $85, $98, $F5, $7A, $85, $1A, $0D, $E1, $0F, $7C, $89, $0C,
  38.     $85, $0B, $23, $69, $87, $7B, $23, $0C, $1F, $B7, $21, $7A, $88, $7E, $8F, $A5,
  39.     $7D, $80, $B7, $B9, $18, $BF, $4B, $19, $85, $A5, $91, $80, $87, $81, $87, $7C,
  40.     $0F, $73, $91, $91, $84, $87, $37, $D7, $86, $79, $E1, $DD, $85, $7A, $73, $9B,
  41.     $05, $7D, $0D, $83, $87, $9C, $85, $33, $87, $7D, $85, $0F, $87, $7D, $0D, $7D,
  42.     $F6, $7E, $87, $7D, $88, $19, $89, $F5, $D1, $DD, $85, $7D, $8B, $C3, $EA, $7A,
  43.     $D7, $B0, $0D, $7D, $87, $A5, $87, $7C, $73, $7E, $7D, $86, $87, $23, $85, $10,
  44.     $D7, $DF, $ED, $A5, $E1, $7A, $85, $23, $EA, $7E, $85, $98, $AD, $79, $86, $7D,
  45.     $85, $7D, $D7, $7D, $E1, $7A, $F5, $7D, $85, $B0, $2B, $37, $E1, $7A, $87, $79,
  46.     $84, $7D, $73, $73, $87, $7D, $23, $7D, $E9, $7D, $85, $7E, $02, $7D, $DD, $2D,
  47.     $87, $79, $E7, $79, $AD, $7C, $23, $DA, $87, $0D, $0D, $7B, $E7, $79, $9B, $7D,
  48.     $D7, $8F, $05, $7D, $0D, $34, $8F, $7D, $AD, $87, $E9, $7C, $85, $80, $85, $79,
  49.     $8A, $C3, $E7, $A5, $E8, $6B, $0D, $74, $10, $73, $33, $17, $0D, $37, $21, $19);
  50.  
  51. procedure Enc_Dec.Encrypt(Src:array of byte; Len:Word);
  52. var i:Cardinal;
  53. pos,key,rand_key: integer;
  54. sum1,sum2: integer;
  55. begin
  56.    sum1:=0;
  57.    sum2:=0;
  58.    Randomize;
  59.    rand_key := Random(255);
  60.    BufferDest[0]:=WordRec(Len).Lo;
  61.    BufferDest[1]:=WordRec(Len).Hi;
  62.    BufferDest[2]:=rand_key;
  63.    BufferDest[3]:=0;
  64.    Src[8]:=timegettime;
  65.  
  66.    pos:=EncDecKeys[rand_key * 2];
  67.    i:=4;
  68.  
  69.    while( i < Len) do begin
  70.     key := EncDecKeys[((pos and $FF) * 2) + 1];
  71.     case (i and 3) of
  72.     0:
  73.     begin
  74.       key := key * 2;
  75.       key := Key and 255;
  76.       BufferDest[i] := Src[i] + key;
  77.     end;
  78.     1:
  79.     begin
  80.       key := key shr 3;
  81.       key := Key and 255;
  82.       BufferDest[i] := Src[i] - key;
  83.     end;
  84.     2:
  85.     begin
  86.       key := key * 4;
  87.       key := Key and 255;
  88.       BufferDest[i] := Src[i] + key;
  89.     end;
  90.     3:
  91.     begin
  92.       key := key shr 5;
  93.       key := Key and 255;
  94.       BufferDest[i] := Src[i] - key;
  95.     end;
  96.     else
  97.     begin
  98.       key := key shr 5;
  99.       key := Key and 255;
  100.       BufferDest[i] := Src[i] - key;
  101.     end;
  102.     end;
  103.     sum1:=sum1+Src[i];
  104.     sum2:=sum2+BufferDest[i];
  105.     inc(pos,1);
  106.     inc(i,1);
  107.    end;
  108.    sum1:= sum1 and $FF;
  109.    sum2:= sum2 and $FF;
  110.    BufferDest[3] := ((sum2 - sum1) and 255);
  111. end;
  112.  
  113. function Enc_Dec.Decrypt(Src:array of byte; Len:Word): boolean;
  114. var i:Cardinal;
  115. pos,key: integer;
  116. sum1,sum2: integer;
  117. begin
  118.    sum1:=0;
  119.    sum2:=0;
  120.  
  121.    pos:=EncDecKeys[Src[2] * 2];
  122.    i:=4;
  123.  
  124.    while(i < Len) do begin
  125.  
  126.     sum1:=sum1 + Src[i];
  127.     key := EncDecKeys[((pos and $FF) * 2) + 1];
  128.  
  129.     case (i and 3) of
  130.     0:
  131.     begin
  132.       key := key shl 1;
  133.       key := Key and 255;
  134.       Src[i] := Src[i] - key;
  135.     end;
  136.     1:
  137.     begin
  138.       key := key shr 3;
  139.       key := Key and 255;
  140.       Src[i] := Src[i] + key;
  141.     end;
  142.     2:
  143.     begin
  144.       key := key shl 2;
  145.       key := Key and 255;
  146.       Src[i] := Src[i] - key;
  147.     end;
  148.     3:
  149.     begin
  150.       key := key shr 5;
  151.       key := Key and 255;
  152.       Src[i] := Src[i] + key;
  153.     end;
  154.     else
  155.     begin
  156.       key := key shr 5;
  157.       key := Key and 255;
  158.       Src[i] := Src[i] + key;
  159.     end;
  160.     end;
  161.  
  162.     sum2:=sum2+Src[i];
  163.     inc(pos,1);
  164.     inc(i,1);
  165.    end;
  166.    sum1:= sum1 and 255;
  167.    sum2:= sum2 and 255;
  168.    Move(Src,BufferDest,sizeof(Src));
  169.    if Src[3] <> ((sum2 - sum1) and 255) then
  170.    result:=false
  171.    else
  172.    result:=true;
  173. end;
  174.  
  175. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement