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

RSA Encrypt and Decrypt Strings

See more RSA Examples

_LANGUAGE_ sample code to RSA public-key encrypt and decrypt strings using public and private 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()

-- This example also generates the public and private
-- keys to be used in the RSA encryption.
-- Normally, you would generate a key pair once,
-- and distribute the public key to your partner.
-- Anything encrypted with the public key can be
-- decrypted with the private key.  The reverse is
-- also true: anything encrypted using the private
-- key can be decrypted using the public key.

-- Generate a 2048-bit key.  Chilkat RSA supports
-- key sizes ranging from 512 bits to 4096 bits.
local privKey = chilkat.PrivateKey.new()
local success = rsa:gen_key(2048, privKey)
if not success then
    print(rsa.last_error_text)
    return
end

local pubKey = chilkat.PublicKey.new()
privKey:to_public_key(pubKey)

local plainText = "Encrypting and decrypting should be easy!"

-- Start with a new RSA object to demonstrate that all we
-- need are the keys previously exported:
local rsaEncryptor = chilkat.Rsa.new()

-- Encrypted output is always binary.  In this case, we want
-- to encode the encrypted bytes in a printable string.
-- Our choices are "hex", "base64", "url", "quoted-printable".
rsaEncryptor.encoding_mode = "hex"

-- We'll encrypt with the public key and decrypt with the private
-- key.
success = rsaEncryptor:use_public_key(pubKey)

local usePrivateKey = false
local encryptedStr = rsaEncryptor:encrypt_string_enc(plainText, usePrivateKey)
print(encryptedStr)

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

rsaDecryptor.encoding_mode = "hex"
success = rsaDecryptor:use_private_key(privKey)

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

print(decryptedStr)