PureBasic
PureBasic
RSA Encrypt and OpenSSL Decrypt
See more OpenSSL Examples
Demonstrates how to use Chilkat to RSA encrypt, and then use OpenSSL to decrypt.Chilkat PureBasic Downloads
IncludeFile "CkBinData.pb"
IncludeFile "CkPublicKey.pb"
IncludeFile "CkPrivateKey.pb"
IncludeFile "CkRsa.pb"
Procedure ChilkatExample()
success.i = 0
; This requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
rsa.i = CkRsa::ckCreate()
If rsa.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
privKey.i = CkPrivateKey::ckCreate()
If privKey.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkRsa::ckGenKey(rsa,2048,privKey)
success = CkPrivateKey::ckSavePkcs8PemFile(privKey,"qa_output/privKey.pem")
pubKey.i = CkPublicKey::ckCreate()
If pubKey.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkPrivateKey::ckToPublicKey(privKey,pubKey)
CkRsa::setCkEncodingMode(rsa, "base64")
plainText.s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890"
bUsePrivateKey.i = 0
CkRsa::ckUsePublicKey(rsa,pubKey)
encryptedStr.s = CkRsa::ckEncryptStringENC(rsa,plainText,bUsePrivateKey)
bd.i = CkBinData::ckCreate()
If bd.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkBinData::ckAppendEncoded(bd,encryptedStr,"base64")
success = CkBinData::ckWriteFile(bd,"qa_output/enc.dat")
; The OpenSSL command to decrypt is:
; openssl pkeyutl -in enc.dat -inkey privKey.pem -keyform PEM -pkeyopt rsa_padding_mode:pkcs1 -decrypt
Debug "OK"
CkRsa::ckDispose(rsa)
CkPrivateKey::ckDispose(privKey)
CkPublicKey::ckDispose(pubKey)
CkBinData::ckDispose(bd)
ProcedureReturn
EndProcedure