Sample code for 30+ languages & platforms
Delphi ActiveX

Generate an RSA Key and Get as Base64 DER

See more RSA Examples

Demonstrates how to generate a 2048-bit RSA key and return the public and private parts as unencrypted Base64 encoded DER.

Chilkat Delphi ActiveX Downloads

Delphi ActiveX
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Chilkat_TLB;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Integer;
rsa: TChilkatRsa;
privKey: TPrivateKey;
pubKey: TPublicKey;
bChoosePkcs1: Integer;
pubKeyBase64Der: WideString;
privKeyPkcs1: WideString;
privKeyPkcs8: WideString;

begin
success := 0;

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

rsa := TChilkatRsa.Create(Self);

// Generate a 2048-bit key.
privKey := TPrivateKey.Create(Self);
success := rsa.GenKey(2048,privKey.ControlInterface);
if (success = 0) then
  begin
    Memo1.Lines.Add(rsa.LastErrorText);
    Exit;
  end;

// Get the public part of the key.
pubKey := TPublicKey.Create(Self);
privKey.ToPublicKey(pubKey.ControlInterface);

// There are two possible formats for representing the RSA public key 
// in ASN.1 (DER).  The possible formats are PKCS1 and PKCS8.
// We can get either by setting bChoosePkcs1 to 1 or 0.
bChoosePkcs1 := 1;
pubKeyBase64Der := pubKey.GetEncoded(bChoosePkcs1,'base64');
Memo1.Lines.Add('Public Key Base64 DER:');
Memo1.Lines.Add(pubKeyBase64Der);

// Get the private key as Base64 DER:
// We can get PKCS1 or PKCS8, but with different methods:
privKeyPkcs1 := privKey.GetPkcs1ENC('base64');
Memo1.Lines.Add('Private Key PKCS1 Base64 DER:');
Memo1.Lines.Add(privKeyPkcs1);

privKeyPkcs8 := privKey.GetPkcs8ENC('base64');
Memo1.Lines.Add('Private Key PKCS8 Base64 DER:');
Memo1.Lines.Add(privKeyPkcs8);
end;