Lua Requires Chilkat v9.5.0.67+
Lua
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
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.")