Delphi Examples

ChilkatHOMEASPVisual BasicVB.NETC#Visual C++CMFCDelphiFoxProJavaPerlPHPPythonRubySQL ServerVBScript

Delphi Examples

Bounced Mail
Bz2
Character Encoding
CSV
DKIM / DomainKey
Digital Certificates
Digital Signatures
DH Key Exchange
DSA
Email
Email Object
FTP
HTML-to-XML
HTTP
IMAP
Encryption
MHT / HTML Email
NTLM
POP3
RSA
S/MIME
SMTP
Socket
Spider
SFTP
SSH
SSH Key
SSH Tunnel
String
Tar
Upload
XML
XMP
Zip Compression

More Examples...
Byte Array
FileAccess
RSS
Atom
Self-Extractor
Service
PPMD
Deflate
Bzip2
LZW

Type Conversion

 

Article: Understanding COM References in Delphi

RSA Encrypt and Decrypt Credit Card Numbers

Delphi sample code to RSA public-key encrypt and decrypt credit card numbers. The RSA key is loaded from an unencrypted PKCS8 file. Chilkat provides many ways of setting the key -- loading from both encrypted and unencrypted PEM, PKCS8, DER, PVK, etc. Keys may be loaded from files or in-memory representations. (The RSA component also provides the ability to generate RSA keys.)

Download Chilkat RSA ActiveX

uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls,
    CHILKATCERTIFICATELib_TLB,
    CHILKATRSALib_TLB,
    OleCtrls;

...

procedure TForm1.Button1Click(Sender: TObject);
var
rsa: TChilkatRsa;
success: Integer;
key: CHILKATCERTIFICATELib_TLB.IPrivateKey;
keyXml: String;
ccNumber: String;
usePrivateKey: Integer;
encryptedStr: String;
rsaDecryptor: TChilkatRsa;
decryptedStr: String;

begin
rsa := TChilkatRsa.Create(Self);

success := rsa.UnlockComponent('Anything for 30-day trial');
if (success <> 1) then
  begin
    ShowMessage(rsa.LastErrorText);
    Exit;
  end;

key := TprivateKey.Create(Self).ControlInterface;

//  Load an RSA private key from a PKCS8 file:
success := key.LoadPkcs8File('rsaPrivateKey.p8');
if (success <> 1) then
  begin
    ShowMessage(key.LastErrorText);
    Exit;
  end;

//  Get the key as XML:

keyXml := key.GetXml();

//  We'll encrypt with the public key and decrypt with the private
//  key.  (It's also possible to do the reverse.)
//  Note: An RSA private key is composed of different parts internally: modulus, exponent, P, Q, etc.
//  An RSA public-key is a sub-set of the private key.
//  Therefore, when you have a private key, you really have
//  both public and private keys.
success := rsa.ImportPublicKey(keyXml);
if (success <> 1) then
  begin
    ShowMessage(rsa.LastErrorText);
    Exit;
  end;

//  Encrypt a VISA credit card number:
//  1234-5678-0000-9999
ccNumber := '1234567800009999';

usePrivateKey := 0;
rsa.EncodingMode := 'base64';
encryptedStr := rsa.EncryptStringENC(ccNumber,usePrivateKey);
Memo1.Lines.Add('Encrypted:');
Memo1.Lines.Add(encryptedStr);

//  Now decrypt:
rsaDecryptor := TChilkatRsa.Create(Self);

rsaDecryptor.EncodingMode := 'base64';
rsaDecryptor.ImportPrivateKey(keyXml);

usePrivateKey := 1;
decryptedStr := rsaDecryptor.DecryptStringENC(encryptedStr,usePrivateKey);

Memo1.Lines.Add('Decrypted:');
Memo1.Lines.Add(decryptedStr);

//  Important: RSA encryption should only be used to encrypt small amounts of data.
//  It is typically used for encrypting symmetric encryption
//  keys such that a symmetric encryption algorithm, such as
//  AES is then used to encrypt/decrypt bulk data.

end;

 

Need a specific example? Send a request to support@chilkatsoft.com

© 2000-2010 Chilkat Software, Inc. All Rights Reserved.

Mail Component · .NET Email Component · XML Parser