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

Generate RSA Public/Private Key

See more RSA Examples

_LANGUAGE_ example code showing how to generate an RSA public/private key.

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,
  Chilkat.PublicKey;

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

procedure RunDemo;
var
  success: Boolean;
  rsa: TRsa;
  privKey: TPrivateKey;
  pubKey: TPublicKey;

begin
  success := False;

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

  rsa := TRsa.Create;

  //  Generate a 2048-bit key.  Chilkat RSA supports
  //  key sizes ranging from 512 bits to 8192 bits.
  privKey := TPrivateKey.Create;
  success := rsa.GenKey(2048,privKey);
  if (success = False) then
    begin
      WriteLn(rsa.LastErrorText);
      Exit;
    end;

  pubKey := TPublicKey.Create;
  privKey.ToPublicKey(pubKey);

  WriteLn(privKey.GetPkcs8Pem());

  WriteLn(pubKey.GetPem(False));

  //  Sample output:

  //  -----BEGIN PRIVATE KEY-----
  //  MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQD0SwWmX222gCpW
  //  ue75Q3VicOSXlTW0YNVksW8oGLS8x/SI5ZUqVMLIl2gsF1drEg2b+lvfeB7l2hwo
  //  UUCK0x2L2qv8hs4zrHmrrCi5xHHG7kpQAoi2PTodWvKvr9m7+n+nFcwOMrY0+qZM
  //  oYUg85yde3tWek5ouj4v1ZC9lbsozTrl2aIm/nD+o1PXg/V7CL2owbS+UG0iRz0C
  //  IYwn8hNEEe3/Uzw2oq7Gt37jOTYB21jX9RSgt0v90ifaQeXR6uiuuaJLRVunJXrd
  //  lJ9QvJh8xYuyEhJO5cChtn2AcSSxm417O4vJzBSHKKAn+EA/YIs74UsYTZojG5x/
  //  ptA3GDzhAgMBAAECggEBAIC4Vw3HEqQq/CQebJDivqNUIN7OPDIDI+2eoJdcDT+7
  //  jFnlvqdDai8PuFAjLGi6ZnldfbNOM9mhB10nEv8TJmpemmjBDz2jD6kpWXwoylqr
  //  jHSEIU0FDe4R0fZIjk3CPCjqD08b4W4g9CdEpEUsl8VTHzX90/rSx5mkylNa5fck
  //  xOf7V4W3L0OC+J0zKFiAQtI1abf+7x5rsnoi8sJ90v4wWWaXtMxHAZRLZxY2FtV3
  //  BbydbTqU+UC8T2+4ga+J549k9QomZ8zUhxe22jTBcKcIE+cGK5CLN8fJJ1GZWiB9
  //  JYOmeTat7N6SrpqdTsjqF2+Y6s5lt+B1yI6Fg2069MECgYEA/VYd3xZgqEjM1095
  //  zEce1eNujk+QGRfQv/9ToF8/jdJAvJQStagupIAHH0+iLnQGIZKLS0AxTJqlz0be
  //  r+0+8bs2whiuCvNF6U/pfslMUdlkOlY38lhdL3IqVOcf4douGEPI1BJlJraJFxea
  //  49SeWJLY23Yb1j3yvCWTmBP6q8UCgYEA9tyQcRCRDis4V7NGwvWi8v3BBHf/lgo0
  //  ac+676DWqHco4cbu1ZVkyM5Y3rgsgX5APeqPhaXlivvv8LLhUSydUoquhdHlBeRi
  //  XxTBj4aNNRwBfC9x9keOaBBBhughwgrDcEnGL6/B/6mpXydY0El7DmGf1G5x46NY
  //  jUoqVa54Um0CgYAI8eN4HwgmqPtiltHMHq6+Cpu6tqB14ltijBdd0D8kOMpEXk4S
  //  z+9lq4eU2XD2hu44fT4h2BBljghQu0XdnFjenCegztJGXLSZOlMaQO1K7owVaznq
  //  eqg/pp5MBSUhCl0aSjprEoMzzLomcJTtenJk2jqB9TeiZumNLx54/iuZqQKBgDjp
  //  bq9yV07B7hJh9W1a/f8xOz+Rfq4TmjPOvVUjanmaRyWOHF/HOl4FHH30TeZoudzM
  //  Z9wy+/GH1bBTPRjexUJTUJrvYfJyza8H9Pvm1EUrOLhto8NYid856DF28Nlwa9BG
  //  Ydd6mKodbjvOsW4LksAlB5kNAVquvOqN76ajO4AdAoGBAMXWdg9VFObBklLTRs81
  //  LgtLd9brWpRUHYkH8Ctw2bgyHuel26HVghWWy7JxU308uWL6ZrSXv7Qlsw7iYYwP
  //  m8BwjxUTfwTpqHfIi5sjeL6IeNiUPesqyT4B7J7ssmzYf8bedwN7TsrrY+169Ud3
  //  tC1UNW1BQbHh4RnyusT93Z71
  //  -----END PRIVATE KEY-----
  //  
  //  -----BEGIN PUBLIC KEY-----
  //  MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA9EsFpl9ttoAqVrnu+UN1
  //  YnDkl5U1tGDVZLFvKBi0vMf0iOWVKlTCyJdoLBdXaxINm/pb33ge5docKFFAitMd
  //  i9qr/IbOM6x5q6woucRxxu5KUAKItj06HVryr6/Zu/p/pxXMDjK2NPqmTKGFIPOc
  //  nXt7VnpOaLo+L9WQvZW7KM065dmiJv5w/qNT14P1ewi9qMG0vlBtIkc9AiGMJ/IT
  //  RBHt/1M8NqKuxrd+4zk2AdtY1/UUoLdL/dIn2kHl0erorrmiS0VbpyV63ZSfULyY
  //  fMWLshISTuXAobZ9gHEksZuNezuLycwUhyigJ/hAP2CLO+FLGE2aIxucf6bQNxg8
  //  4QIDAQAB
  //  -----END PUBLIC KEY-----


  rsa.Free;
  privKey.Free;
  pubKey.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.