Sample code for 30+ languages & platforms
PowerBuilder Requires Chilkat v11.0.0+

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 PowerBuilder Downloads

PowerBuilder
integer li_rc
long li_Success
oleobject loo_Rsa
oleobject loo_PrivKey
oleobject loo_PubKey
string ls_PlainText
oleobject loo_RsaEncryptor
long li_UsePrivateKey
string ls_EncryptedStr
oleobject loo_RsaDecryptor
string ls_DecryptedStr

li_Success = 0

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

loo_Rsa = create oleobject
li_rc = loo_Rsa.ConnectToNewObject("Chilkat.Rsa")
if li_rc < 0 then
    destroy loo_Rsa
    MessageBox("Error","Connecting to COM object failed")
    return
end if

//  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.
loo_PrivKey = create oleobject
li_rc = loo_PrivKey.ConnectToNewObject("Chilkat.PrivateKey")

li_Success = loo_Rsa.GenKey(2048,loo_PrivKey)
if li_Success = 0 then
    Write-Debug loo_Rsa.LastErrorText
    destroy loo_Rsa
    destroy loo_PrivKey
    return
end if

loo_PubKey = create oleobject
li_rc = loo_PubKey.ConnectToNewObject("Chilkat.PublicKey")

loo_PrivKey.ToPublicKey(loo_PubKey)

ls_PlainText = "Encrypting and decrypting should be easy!"

//  Start with a new RSA object to demonstrate that all we
//  need are the keys previously exported:
loo_RsaEncryptor = create oleobject
li_rc = loo_RsaEncryptor.ConnectToNewObject("Chilkat.Rsa")

//  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".
loo_RsaEncryptor.EncodingMode = "hex"

//  We'll encrypt with the public key and decrypt with the private
//  key.
li_Success = loo_RsaEncryptor.UsePublicKey(loo_PubKey)

li_UsePrivateKey = 0
ls_EncryptedStr = loo_RsaEncryptor.EncryptStringENC(ls_PlainText,li_UsePrivateKey)
Write-Debug ls_EncryptedStr

//  Now decrypt:
loo_RsaDecryptor = create oleobject
li_rc = loo_RsaDecryptor.ConnectToNewObject("Chilkat.Rsa")

loo_RsaDecryptor.EncodingMode = "hex"
li_Success = loo_RsaDecryptor.UsePrivateKey(loo_PrivKey)

li_UsePrivateKey = 1
ls_DecryptedStr = loo_RsaDecryptor.DecryptStringENC(ls_EncryptedStr,li_UsePrivateKey)

Write-Debug ls_DecryptedStr


destroy loo_Rsa
destroy loo_PrivKey
destroy loo_PubKey
destroy loo_RsaEncryptor
destroy loo_RsaDecryptor