Sample code for 30+ languages & platforms
Delphi DLL Requires Chilkat v11.0.0+

RSA Decrypt

See more RSA Examples

RSA decryption using a private key loaded from a PEM file.

This example duplicates the following OpenSSL rsautl command:

openssl rsautl -decrypt -inkey myPrivateKey.pem -in cipher.bin -out decrypted.bin

Chilkat Delphi DLL Downloads

Delphi DLL
var
success: Boolean;
rsa: HCkRsa;
privKey: HCkPrivateKey;
encFileData: HCkByteData;
decFileData: HCkByteData;
fac: HCkFileAccess;

begin
success := False;

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

rsa := CkRsa_Create();

privKey := CkPrivateKey_Create();

success := CkPrivateKey_LoadPemFile(privKey,'myPrivateKey.pem');
if (success = False) then
  begin
    Memo1.Lines.Add(CkPrivateKey__lastErrorText(privKey));
    Exit;
  end;

success := CkRsa_UsePrivateKey(rsa,privKey);
if (success = False) then
  begin
    Memo1.Lines.Add(CkRsa__lastErrorText(rsa));
    Exit;
  end;

encFileData := CkByteData_Create();
decFileData := CkByteData_Create();

fac := CkFileAccess_Create();
success := CkFileAccess_ReadEntireFile(fac,'cipher.bin',encFileData);
if (CkFileAccess_getLastMethodSuccess(fac) = False) then
  begin
    Memo1.Lines.Add(CkFileAccess__lastErrorText(fac));
    Exit;
  end;

success := CkRsa_DecryptBytes(rsa,encFileData,True,decFileData);
if (success = False) then
  begin
    Memo1.Lines.Add(CkRsa__lastErrorText(rsa));
    Exit;
  end;

//  Save the decrypted data to a file.
success := CkFileAccess_WriteEntireFile(fac,'decrypted.bin',decFileData);
if (success <> True) then
  begin
    Memo1.Lines.Add('Failed to save decrypted data.');
    Exit;
  end;

CkRsa_Dispose(rsa);
CkPrivateKey_Dispose(privKey);
CkByteData_Dispose(encFileData);
CkByteData_Dispose(decFileData);
CkFileAccess_Dispose(fac);