Sample code for 30+ languages & platforms
Lianja

RSA Encrypt Randomly Generated AES Key

See more RSA Examples

Demonstrates how to RSA encrypt a randomly generated AES key.

Chilkat Lianja Downloads

Lianja
llSuccess = .F.

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

// First generate a 256-bit AES key (32 bytes).
loPrng = createobject("CkPrng")
loBdAesKey = createobject("CkBinData")
llSuccess = loPrng.GenRandomBd(32,loBdAesKey)

// Use a public key from a certificate for RSA encryption.
loCert = createobject("CkCert")

llSuccess = loCert.LoadFromFile("qa_data/pem/mf_public_rsa.pem")
if (llSuccess = .F.) then
    ? loCert.LastErrorText
    release loPrng
    release loBdAesKey
    release loCert
    return
endif

loPubKey = createobject("CkPublicKey")
loCert.GetPublicKey(loPubKey)

loRsa = createobject("CkRsa")
llSuccess = loRsa.UsePublicKey(loPubKey)
if (llSuccess = .F.) then
    ? loRsa.LastErrorText
    release loPrng
    release loBdAesKey
    release loCert
    release loPubKey
    release loRsa
    return
endif

// RSA encrypt our 32-byte AES key.
// The contents of bdAesKey are replaced with result of the RSA encryption.
llSuccess = loRsa.EncryptBd(loBdAesKey,.F.)
if (llSuccess = .F.) then
    ? loRsa.LastErrorText
    release loPrng
    release loBdAesKey
    release loCert
    release loPubKey
    release loRsa
    return
endif

// Return the result as a base64 string
lcEncryptedAesKey = loBdAesKey.GetEncoded("base64")

? "encrypted AES key = " + lcEncryptedAesKey


release loPrng
release loBdAesKey
release loCert
release loPubKey
release loRsa