Sample code for 30+ languages & platforms
Delphi DLL

Generate an RSA Key and Export to XML

See more RSA Examples

Demonstrates how to generate an RSA key and export public/private to XML.

Chilkat Delphi DLL Downloads

Delphi DLL
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, PrivateKey, Rsa, PublicKey;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Boolean;
rsa: HCkRsa;
privKey: HCkPrivateKey;
pubKey: HCkPublicKey;
privKeyXml: PWideChar;
pubKeyXml: PWideChar;

begin
success := False;

rsa := CkRsa_Create();

// Generate a 2048-bit key.
privKey := CkPrivateKey_Create();
success := CkRsa_GenKey(rsa,2048,privKey);
if (success = False) then
  begin
    Memo1.Lines.Add(CkRsa__lastErrorText(rsa));
    Exit;
  end;

pubKey := CkPublicKey_Create();
CkPrivateKey_ToPublicKey(privKey,pubKey);

privKeyXml := CkPrivateKey__getXml(privKey);
Memo1.Lines.Add(privKeyXml);

// Sample output:

// <RSAKeyValue>
// 	<Modulus>pvxYRzbV8Gru5/NNFQunXkLfhUW9W83/A+LtVD5jhV5oDZ5mv9R3BbfBE88UTqGjA1jZoFegprY3dGpm7Dl0PFqIYSwfE869Tx7OGzg+ocsM3klTBslxVftN4grJzovfWeUbi22JNbOEjuvI9548OmTnIHhYI9yhl54xyIHUIRWCa6nlPNfqqFD/tscmel+2AwWM5hhylse2Q3xg1Y3D3al3BckGGvrBGjKAFoN60+kmD0mnisy0zfHRAiHH8EsqSXASXjqRa6G60jj+tRrdY5AcOrtWe7tsoHE8txGI+xZQ6g3MWelyNM6Dnb324hid8rNxj33lFiqbOkQGPvE9fw==</Modulus>
// 	<Exponent>AQAB</Exponent>
// 	<D>fsydqC3+lJpOoblBrhp0VAKJwqSrXpv06pmVx+O8JJkEgFrpAP+wBZp8NbOIYxEgPLlqP/RqXE1/nJnzX6tdFTtV1hvv2VWisQLeVRMHlEogkmaxcjTjJ/w1LtEsXvgdeSCdIunhR/LyVKi8qTLx3xGh5CkeHNU7q2sHuI7Favy0ux5JluKdrx4CSu30DKPhVvIoWTp4rif5lBBMojw7TEj2Gfbrfw8ZoPZRztjpqI8D4ZyxuFKrPEVWBNBt3yTE3TLWnlH1Me/5iwLgctLv+htDNStoKmco7t+xepusgALYachRaRe7bbVahDaQF/hOxKd00CpoetuasPjBP5yMaQ==</D>
// 	<P>wl6TQ35VGfpR4dk1I+7JeQVXMyD9McAIKrlQ0uGc2U5Ts7MXXaq0l+QI6/VPsf0jtuzRiT4+wmDUgWjaYpNUaBn1KI+F/gRdMgZcmEOOGUDiCCsWUO0hS5tlchyY9l8LoPXFbpdfNFsLEZDtIEeNMyRzBHcZABoXWN/yFqGsaEU=</P>
// 	<Q>2+74GkV4+1Dkxr/KGNZKfYaKEolaRRmjxeUj8VNLU9vKpaGXEgsi7208esH8KG5He1f8fJOIJtnRfUne/cg8vrqPRQ8nYDGSaNswPNQldji2FhNN2hWmhlQ3hS+ymTS8Dm8h1dqRVn/QQNvH8+WkcztmUNXKk3vtnc2UBakPdPM=</Q>
// 	<DP>ar3zk9JSPBT7WNOnWldtr5eePsb0JZk3Ivdoipc6QyC/2OUWhOsViIDD4YlzveSt82x02jEj2C3DJlqF7DLK3Oy8dQz04f5Vi/5wZXJcHEREnYXEGKdRbKsneBZ6bnrd8QRn64cX0rHZD0mO3/ZLdfWjcKVTRnoNrlI2KfWZsB0=</DP>
// 	<DQ>TvJgAuYvQF9QT/umavX5NUfnJjJBwg4rGK1hEo5oushp3Ly9gs+WkcVvcU1S25yCckcqLfmzZObJaSTsM8L98yT6qrp+0uvYd2U+0ocAj4hZ7GCvkHo3FX8Dkv6FKLOiUbgYuDBF/XvR4IZEJ0umlWqcFqY3mmtg50VVPhbqons=</DQ>
// 	<InverseQ>W7bC5ZD55dv6XqmfHDVuUoI8IZQVnM1M1BtA5+tTFXxPT29ZUov7wOh+5R2nygUqkJfiNAC0s18tPiv7HoQXHxIskI2tXT3XM9yJdZOnAXCzV+xh+zeenBVTD63PvpNpC9Obrxd1rpBi2jTIFESgD0Cn5CKEIUpXIGntaNLLgDI=</InverseQ>
// </RSAKeyValue>

pubKeyXml := CkPublicKey__getXml(pubKey);
Memo1.Lines.Add(pubKeyXml);

// Sample output:
// <RSAPublicKey>
// 	<Modulus>pvxYRzbV8Gru5/NNFQunXkLfhUW9W83/A+LtVD5jhV5oDZ5mv9R3BbfBE88UTqGjA1jZoFegprY3dGpm7Dl0PFqIYSwfE869Tx7OGzg+ocsM3klTBslxVftN4grJzovfWeUbi22JNbOEjuvI9548OmTnIHhYI9yhl54xyIHUIRWCa6nlPNfqqFD/tscmel+2AwWM5hhylse2Q3xg1Y3D3al3BckGGvrBGjKAFoN60+kmD0mnisy0zfHRAiHH8EsqSXASXjqRa6G60jj+tRrdY5AcOrtWe7tsoHE8txGI+xZQ6g3MWelyNM6Dnb324hid8rNxj33lFiqbOkQGPvE9fw==</Modulus>
// 	<Exponent>AQAB</Exponent>
// </RSAPublicKey>

CkRsa_Dispose(rsa);
CkPrivateKey_Dispose(privKey);
CkPublicKey_Dispose(pubKey);

end;