Chilkat HOME Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi DLL Go Java Node.js Objective-C PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(PureBasic) RSA Encrypt String to Encoded Result and ReverseSee more RSA ExamplesDemonstrates how to RSA encrypt a string to a base64 encoded result, and the reverse.
IncludeFile "CkPublicKey.pb" IncludeFile "CkPrivateKey.pb" IncludeFile "CkRsa.pb" Procedure ChilkatExample() ; The RSA public key is used for encryption, and the private key for decryption. ; The public key's role is to make encryption accessible to anyone while ensuring that ; only the private key holder can decrypt the messages. ; The public key is designed to be widely distributed so anyone can use it to encrypt messages ; intended for the owner of the private key. ; Load our 2048-bit RSA public key. pubKey.i = CkPublicKey::ckCreate() If pubKey.i = 0 Debug "Failed to create object." ProcedureReturn EndIf ; In all Chilkat methods expecting a path, you pass either absolute or relative paths. success.i = CkPublicKey::ckLoadFromFile(pubKey,"rsaKeys/myTestRsaPublic.pem") If success = 0 Debug CkPublicKey::ckLastErrorText(pubKey) CkPublicKey::ckDispose(pubKey) ProcedureReturn EndIf rsa.i = CkRsa::ckCreate() If rsa.i = 0 Debug "Failed to create object." ProcedureReturn EndIf ; Tell RSA to use the public key. CkRsa::ckImportPublicKeyObj(rsa,pubKey) ; RSA encryption is for small amounts of data, on the order of 200 bytes or less. ; The maximum number of bytes that can be RSA encrypted depends ; on the RSA key size and padding scheme (OAEP padding vs PKCS#1 v1.5 padding). ; For specific limits, see: RSA Encryption Maximum Number of Bytes ; Encrypt the utf-8 byte representation of the string. CkRsa::setCkCharset(rsa, "utf-8") CkRsa::setCkEncodingMode(rsa, "base64") ; Be Careful when Using non-us-ascii String Literals in Source Code encryptedB64.s = CkRsa::ckEncryptStringENC(rsa,"Élève français dîne à côté d’un café où l’on sert déjà du gâteau au chocolat et des éclairs délicieux",0) ; ------------------------------------------------------------------------------------------------------------------------ ; Let's decrypt, which requires the matching private key... ; Load the matching 2048-bit RSA private key. privKey.i = CkPrivateKey::ckCreate() If privKey.i = 0 Debug "Failed to create object." ProcedureReturn EndIf password.s = "secret" success = CkPrivateKey::ckLoadAnyFormatFile(privKey,"rsaKeys/myTestRsaPrivate.pem",password) If success = 0 Debug CkPrivateKey::ckLastErrorText(privKey) CkPublicKey::ckDispose(pubKey) CkRsa::ckDispose(rsa) CkPrivateKey::ckDispose(privKey) ProcedureReturn EndIf ; Tell the RSA object to use the private key. CkRsa::ckImportPrivateKeyObj(rsa,privKey) ; Indicate that after decrypting the resultant decrypted bytes contains the utf-8 byte representation of the text. CkRsa::setCkCharset(rsa, "utf-8") CkRsa::setCkEncodingMode(rsa, "base64") originalText.s = CkRsa::ckDecryptStringENC(rsa,encryptedB64,1) If success = 0 Debug CkRsa::ckLastErrorText(rsa) CkPublicKey::ckDispose(pubKey) CkRsa::ckDispose(rsa) CkPrivateKey::ckDispose(privKey) ProcedureReturn EndIf Debug "Original text = " + originalText Debug "Success." CkPublicKey::ckDispose(pubKey) CkRsa::ckDispose(rsa) CkPrivateKey::ckDispose(privKey) ProcedureReturn EndProcedure |
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.