Chilkat HOME ASP Visual Basic VB.NET C# Visual C++ C MFC Delphi FoxPro Java Perl PHP Python Ruby SQL Server VBScript
RSA Encrypt and Decrypt Credit Card NumbersDelphi 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.) 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.