Advertisement
Guest User

Untitled

a guest
Feb 27th, 2020
255
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.95 KB | None | 0 0
  1. // TOTAL COMMANDER PUBLIC-KEY CRYPTOSYSTEM
  2. // by DimitarSerg
  3. // (2013)
  4. function IsBit(Value, Pos: Integer): Boolean;
  5. asm
  6.   mov ECX,EAX
  7.   xor EAX,EAX
  8.   and EDX,31
  9.   bt ECX,EDX
  10.   adc EAX,0
  11. end;
  12.  
  13. function count_bin_digits(a:integer):byte;
  14. begin
  15.   Result:=0;
  16.   repeat
  17.     Inc(Result);
  18.     a := a div 2; //Remove the next least significant bit in the record number.
  19.   until a = 0;
  20. end;
  21.  
  22. function rsa_encrypt(cyphertext:string;e:Dword):string;
  23. var n1,c1,r,r1,r2,c2,n_2fg:TFGInt;
  24. c,n,n_2:string;
  25. i:byte;
  26. begin
  27.     n:='AAD4474DC8387E81BB095D810F4F4F21D5D7CCC756E3D6E5DEE48AC000C25AA0EFAD0AD3A5AC46F15B50249597461BBB87CDC3F1BA37C17A9A207A3603E38E718F9927A5EB38005D8B72EAFDC63931C3D93C1FAD457A17CA85BEB40F3FA9152770DAC12E8E3B912D';
  28.   n_2:='2';
  29.  
  30.   ConvertHexStringToBase256String(n_2,n_2);     // Convert N-2 to Base256
  31.   Base256StringToFGInt(n_2,n_2fg);              // Convert N-2 to FGInt
  32.  
  33.   ConvertHexStringToBase256String(N,N);         // Convert N to Base256
  34.   Base256StringToFGInt(N,n1);                   // Convert N to FGInt
  35.  
  36.   ConvertHexStringToBase256String(cyphertext,c);// Convert CT to Base256
  37.   Base256StringToFGInt(c,c1);                   // Convert CT to FGInt
  38.  
  39.  r1:=c1;
  40.  
  41. for i:=count_bin_digits(e)-1 downto 1 do
  42.  begin
  43.      if IsBit(e,i) then
  44.       begin
  45.         FGIntMul(c1,c1,r);           //MUL
  46.         FGIntSub(r,n_2fg,c2);        //ADD
  47.       end;
  48.  
  49.      FGIntMul(c1,c2,r);           //MUL
  50.      FGIntSub(r,r1,r2);           //ADD
  51.      FGIntMod(r2,n1,c2);          //MOD
  52.  
  53.      FGIntMul(c1,c1,r);           //MUL
  54.      FGIntSub(r,n_2fg,r2);        //ADD
  55.      FGIntMod(r2,n1,c1);          //MOD
  56.   end;
  57.  
  58.  //-----------------------------------------------
  59.   FGIntToBase256String(c2,result);
  60.   ConvertBase256StringToHexString(result,result);
  61.   // Destroy FGInt (important!)
  62.   FGIntDestroy(c2);
  63.   FGIntDestroy(r);
  64.   FGIntDestroy(r1);
  65.   FGIntDestroy(r2);
  66.   FGIntDestroy(n_2fg);
  67.   FGIntDestroy(c1);
  68.   FGIntDestroy(n1);
  69. end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement