Sample code for 30+ languages & platforms
Lua Requires Chilkat v9.5.0.67+

RSAES-OAEP Encrypt String with AES-128 Content Encryption and SHA256

See more Encryption Examples

Encrypts a string using RSAES-OAEP with SHA256 and AES-128 content encryption to produce PKCS7 output (base64 encoded).

Chilkat Lua Downloads

Lua
local chilkat = require("chilkat")

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

-- First build a string to be encrypted
local sb = chilkat.StringBuilder.new()
local i = 1
while i < 25 do
    sb:append_int(i)
    sb:append(" the quick brown fox jumped over the lazy dog.\r\n")
    i = i + 1
end

print(sb:get_as_string())

-- The string to be encrypted looks like this:

-- 1 the quick brown fox jumped over the lazy dog.
-- 2 the quick brown fox jumped over the lazy dog.
-- 3 the quick brown fox jumped over the lazy dog.
-- 4 the quick brown fox jumped over the lazy dog.
-- 5 the quick brown fox jumped over the lazy dog.
-- 6 the quick brown fox jumped over the lazy dog.
-- ...

-- Load a digital certificate.
-- We don't need the private key for encryption.
-- Only the public key is needed (which is included in a certificate).
local cert = chilkat.Cert.new()
local success = cert:load_from_file("qa_data/rsaes-oaep/cert.pem")
if not success then
    print(cert.last_error_text)
    return
end

local crypt = chilkat.Crypt2.new()

-- Tell the crypt object to use the certificate.
crypt:set_encrypt_cert(cert)

-- Indicate that we want PKI encryption (i.e. public-key infrastructure)
-- to produce a CMS message (Cryptographic Message Syntax/PKCS7),
-- that is be created with RSAES-OAEP padding, SHA256, and AES-128 for the
-- bulk encryption.
crypt.crypt_algorithm = "pki"
crypt.pkcs7_crypt_alg = "aes"
crypt.key_length = 128
crypt.oaep_hash = "sha256"
crypt.oaep_padding = true

-- Also, don't forget to be specific about the character encoding (byte representation) of the
-- string to be encrypted.
crypt.charset = "utf-8"

-- Now indicate that the PKCS7 output is to be returned in the base64 encoding.
crypt.encoding_mode = "base64"

local base64Pkcs7 = crypt:encrypt_string_enc(sb:get_as_string())
if not crypt.last_method_success then
    print(crypt.last_error_text)
    return
end

-- Show the output
print(base64Pkcs7)

-- This base64 can be copy-and-pasted into the form at http://lapo.it/asn1js/
-- to verify that all the chosen algorithms were indeed used.

print("OK.")