Lua Requires Chilkat v11.0.0+
Lua
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
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)