Sample code for 30+ languages & platforms
Visual FoxPro

RSA Encrypt and Decrypt Credit Card Numbers

See more RSA Examples

_LANGUAGE_ 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.)

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loRsa
LOCAL loPrivKey
LOCAL loPubKey
LOCAL lcCcNumber
LOCAL lnUsePrivateKey
LOCAL lcEncryptedStr
LOCAL loRsaDecryptor
LOCAL lcDecryptedStr

lnSuccess = 0

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

loRsa = CreateObject('Chilkat.Rsa')

loPrivKey = CreateObject('Chilkat.PrivateKey')

* Load an RSA private key from a file:
lnSuccess = loPrivKey.LoadAnyFormatFile("rsaPrivateKey.key","")
IF (lnSuccess = 0) THEN
    ? loPrivKey.LastErrorText
    RELEASE loRsa
    RELEASE loPrivKey
    CANCEL
ENDIF

* Get the public part of the private key.
loPubKey = CreateObject('Chilkat.PublicKey')
loPrivKey.ToPublicKey(loPubKey)

lnSuccess = loRsa.UsePublicKey(loPubKey)
IF (lnSuccess = 0) THEN
    ? loRsa.LastErrorText
    RELEASE loRsa
    RELEASE loPrivKey
    RELEASE loPubKey
    CANCEL
ENDIF

* Encrypt a VISA credit card number:
* 1234-5678-0000-9999
lcCcNumber = "1234567800009999"

lnUsePrivateKey = 0
loRsa.EncodingMode = "base64"
lcEncryptedStr = loRsa.EncryptStringENC(lcCcNumber,lnUsePrivateKey)
? "Encrypted:"
? lcEncryptedStr

* Now decrypt:
loRsaDecryptor = CreateObject('Chilkat.Rsa')

loRsaDecryptor.EncodingMode = "base64"
loRsaDecryptor.UsePrivateKey(loPrivKey)

lnUsePrivateKey = 1
lcDecryptedStr = loRsaDecryptor.DecryptStringENC(lcEncryptedStr,lnUsePrivateKey)

? "Decrypted:"
? lcDecryptedStr

* 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

RELEASE loRsa
RELEASE loPrivKey
RELEASE loPubKey
RELEASE loRsaDecryptor