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

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 Lua Downloads

Lua
local chilkat = require("chilkat")

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

local rsa = chilkat.Rsa.new()

local privKey = chilkat.PrivateKey.new()

-- Load an RSA private key from a file:
local success = privKey:load_any_format_file("rsaPrivateKey.key", "")
if not success then
    print(privKey.last_error_text)
    return
end

-- Get the public part of the private key.
local pubKey = chilkat.PublicKey.new()
privKey:to_public_key(pubKey)

success = rsa:use_public_key(pubKey)
if not success then
    print(rsa.last_error_text)
    return
end

-- Encrypt a VISA credit card number:
-- 1234-5678-0000-9999
local ccNumber = "1234567800009999"

local usePrivateKey = false
rsa.encoding_mode = "base64"
local encryptedStr = rsa:encrypt_string_enc(ccNumber, usePrivateKey)
print("Encrypted:")
print(encryptedStr)

-- Now decrypt:
local rsaDecryptor = chilkat.Rsa.new()

rsaDecryptor.encoding_mode = "base64"
rsaDecryptor:use_private_key(privKey)

usePrivateKey = true
local decryptedStr = rsaDecryptor:decrypt_string_enc(encryptedStr, usePrivateKey)

print("Decrypted:")
print(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.