Sample code for 30+ languages & platforms
Pascal (Lazarus/Delphi)

RSA Decrypt using PEM

See more RSA Examples

This example demonstrates decryping RSA encrypted data that is base64 encoded. It uses a private key loaded from a PEM file.

Chilkat Pascal (Lazarus/Delphi) Downloads

Pascal (Lazarus/Delphi)
program ChilkatDemo;

// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.

{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  SysUtils,
  CkDllLoader,
  Chilkat.PrivateKey,
  Chilkat.Rsa;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  success: Boolean;
  rsa: TRsa;
  key: TPrivateKey;
  encryptedStr: string;
  usePrivateKey: Boolean;
  decryptedStr: string;

begin
  success := False;

  //  This example assumes the Chilkat API to have been previously unlocked.
  //  See Global Unlock Sample for sample code.

  rsa := TRsa.Create;

  key := TPrivateKey.Create;

  //  Load an RSA private key from an unencrypted PEM file:
  //  (To load from an encrypted PEM file, call LoadEncryptedPemFile instead.)

  success := key.LoadPemFile('qa_data/rsa/decryptTest/priv.pem');
  if (success = False) then
    begin
      WriteLn(key.LastErrorText);
      Exit;
    end;

  //  Make the key available to the RSA object
  success := rsa.UsePrivateKey(key);
  if (success = False) then
    begin
      WriteLn(rsa.LastErrorText);
      Exit;
    end;

  encryptedStr := 'pP9XFJEsGgxPNHEgNiLB5H5ksCOXDk/G49BPTog1jKLAhYofV4UTH5k2TOYiqRnDnKs8+8uPoN/IxdiGXvuYG8HRzN0HtkhoZO/AxeyaB9S7eddCUlT0Pl2PEB2yQ9HG5rM7jqYOD6MAM4cuX7hqT8fa8tbzJzmBwdfFDBz94bwQjULHiO+gklIBC4vhkXT4yjuvEjxTAKU6tJeZYkBooJNdS/vE5RZRpuF6bGZU41Qc17qFR+iReBq+9f8IMmw8WR8fMbOCaygOfFS1nw7JVsIMGsAIXS8rUaJ/2DfGPfQx5HCiVtTOreGYRUI3esAQjnvUCnavZyQgs53nl7e2aA==';

  rsa.EncodingMode := 'base64';

  usePrivateKey := True;
  decryptedStr := rsa.DecryptStringENC(encryptedStr,usePrivateKey);

  WriteLn('Decrypted:');
  WriteLn(decryptedStr);


  rsa.Free;
  key.Free;

end;

// ---------------------------------------------------------------------------

begin

  try
    RunDemo;
  except
    on E: Exception do
      WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
  end;

  WriteLn;
  {$IFDEF MSWINDOWS}
  WriteLn('Press Enter to exit...');
  ReadLn;
  {$ENDIF}
end.