Xbase++ Requires Chilkat v11.0.0+
Xbase++
Encrypt with Chilkat, Decrypt with OpenSSL
See more OpenSSL Examples
Demonstrates how to RSA encrypt a string using Chilkat, and then shows the corresponding OpenSSL command to RSA decrypt. The OpenSSL command to decrypt is as follows:openssl rsautl -decrypt -inkey VP_Private.pem -in rsa_encrypted.bin -out original.txt
Chilkat Xbase++ Downloads
LOCAL nSuccess
LOCAL oRsa
LOCAL oKey
LOCAL cStrToEncrypt
LOCAL nUsePrivateKey
LOCAL oFac
nSuccess := 0
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
oRsa := CreateObject("Chilkat.Rsa")
// Note: RSA encryption uses the public key.
// RSA decryption uses the private key.
// The reason is that the public key can be freely provided to anybody. This allows anybody
// to send an encrypted message to the private key owner, and only the private key owner
// can decrypt.
oKey := CreateObject("Chilkat.PublicKey")
// Load an RSA public key from a PEM file:
nSuccess := oKey:LoadFromFile("qa_data/pem/VP_Public.pem")
IF (nSuccess == 0)
? oKey:LastErrorText
oRsa:destroy()
oKey:destroy()
RETURN
ENDIF
// Load the public key into the RSA object.
nSuccess := oRsa:UsePublicKey(oKey)
IF (nSuccess == 0)
? oRsa:LastErrorText
oRsa:destroy()
oKey:destroy()
RETURN
ENDIF
cStrToEncrypt := "00000000;XYZ2-3BHQ-ABCD-MMVV;6MY1-GHJK-9LRR;0"
// The LittleEndian property is 0 by default, but it is set here
// anyway to show that LittleEndian byte ordering is required for OpenSSL compatibility.
oRsa:LittleEndian := 0
nUsePrivateKey := 0
oEncryptedBytes := oRsa:EncryptString(cStrToEncrypt, nUsePrivateKey)
IF (oRsa:LastMethodSuccess == 0)
? oRsa:LastErrorText
oRsa:destroy()
oKey:destroy()
RETURN
ENDIF
// The OpenSSL command to decrypt would be this:
// openssl rsautl -decrypt -inkey VP_Private.pem -in rsa_encrypted.bin -out original.txt
oFac := CreateObject("Chilkat.FileAccess")
nSuccess := oFac:WriteEntireFile("qa_output/rsa_encrypted.bin", oEncryptedBytes)
IF (nSuccess == 0)
? oFac:LastErrorText
oRsa:destroy()
oKey:destroy()
oFac:destroy()
RETURN
ENDIF
? "RSA Encryption Succeeded."
oRsa:destroy()
oKey:destroy()
oFac:destroy()