![]() |
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
(DataFlex) Charset Considerations when RSA Encrypting StringsWhen encrypting strings, character encoding can be an issue. Encryption algorithms operate on binary data. If for example, your string includes a character such as é, the bytes used to represent it depend on the character encoding. In an "iso" encoding such as iso-8859-1, or in a "windows" encoding, such as "windows-1252", the é is represented by a single byte. In Unicode however, whether it's utf-8 or ucs-2, the é is represented by 2 bytes. When encrypting strings, the RSA component will first convert the string to the character encoding indicated by the Charset property. When decrypting strings, the RSA component converts from the character encoding indicated by the Charset property to the application's expected charset. In VB6 for example, this would be Unicode. In C++, it's ANSI. In Java, it's utf-8. Note: This example requires Chilkat v11.0.0 or greater.
Use ChilkatAx-win32.pkg Procedure Test Boolean iSuccess Handle hoRsa String sPubKeyXml Variant vPubKey Handle hoPubKey String sPlainText Boolean iUsePrivateKey String sEncryptedStr String sTemp1 Move False To iSuccess // This example assumes the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. Get Create (RefClass(cComChilkatRsa)) To hoRsa If (Not(IsComObjectCreated(hoRsa))) Begin Send CreateComObject of hoRsa End // RSA public key in XML format: Move "<RSAPublicKey><Modulus>of3im3mRgd2NLXIGoK6uYLg6jj0Ug2b42rnqa5Tbwz2ieFqMJqt+++x2oqLYGurlz49nt+7/785g3XYWqoka4u9c9zul6YubIjnBM72dQy7rEkEfbUxgjcxqXyjZFx+FpaxFUecLu688XEu+9UA42VKiCgcl+E7TrqnfeeYpNXc=</Modulus><Exponent>AQAB</Exponent></RSAPublicKey>" To sPubKeyXml Get Create (RefClass(cComChilkatPublicKey)) To hoPubKey If (Not(IsComObjectCreated(hoPubKey))) Begin Send CreateComObject of hoPubKey End Get ComLoadFromString Of hoPubKey sPubKeyXml To iSuccess If (iSuccess = False) Begin Get ComLastErrorText Of hoPubKey To sTemp1 Showln sTemp1 Procedure_Return End Get pvComObject of hoPubKey to vPubKey Get ComUsePublicKey Of hoRsa vPubKey To iSuccess If (iSuccess = False) Begin Get ComLastErrorText Of hoRsa To sTemp1 Showln sTemp1 Procedure_Return End // Use the utf-8 character encoding. When encrypting, the // plain text is first converted to utf-8 bytes and then // RSA encrypted. Set ComCharset Of hoRsa To "utf-8" // Encrypt a string and return the encrypted data base64-encoded: Set ComEncodingMode Of hoRsa To "base64" Move "éééé" To sPlainText Move False To iUsePrivateKey Get ComEncryptStringENC Of hoRsa sPlainText iUsePrivateKey To sEncryptedStr Showln sEncryptedStr End_Procedure |
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.