Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(DataFlex) Duplicate PHP RSA EncryptionDemonstrates how to duplicate the following PHP function.
Use ChilkatAx-win32.pkg Procedure Test String sRsaMOD String sRsaEXP Handle hoBdMod Handle hoBdExp Boolean iSuccess Handle hoXml Variant vPubkey Handle hoPubkey Handle hoRsa String sPlainText String sCipherText String sTemp1 Boolean bTemp1 // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. // Duplicate the following PHP code: // // public function encryptRSA($plainText,$rsaMOD,$pubKEY){ // $rsa = new RSA(); // $rsa->setEncryptionMode(RSA::ENCRYPTION_PKCS1); // $publicKey = [ // 'e' => new BigInteger($pubKEY,16), // 'n' => new BigInteger($rsaMOD,16) // ]; // // $rsa->loadKey($publicKey); // $ciphertext = $rsa->encrypt($plainText); // return bin2hex($ciphertext); // } // // $plainText="key=abcdefghijkmnopq&iv=abcdefghijkmnopq&h=12345678&s=12345678" // $rsaMOD="F0946D8F05604809E24B8CFFD30349CEA9E5F4D320BFD9E9AA1B088863F02C43E7997D37A3E27B4F8F359F1744DB6B20A437067C0D325A80660D12FF56A57673" // $pubKEY="010001" // We have the RSA modulus in hex Move "F0946D8F05604809E24B8CFFD30349CEA9E5F4D320BFD9E9AA1B088863F02C43E7997D37A3E27B4F8F359F1744DB6B20A437067C0D325A80660D12FF56A57673" To sRsaMOD // The RSA exponent in hex is "010001", which is 65537 in decimal. It's typically the exponent that is always used. Move "010001" To sRsaEXP // Get the RSA modulus and exponent in base64. Get Create (RefClass(cComChilkatBinData)) To hoBdMod If (Not(IsComObjectCreated(hoBdMod))) Begin Send CreateComObject of hoBdMod End Get Create (RefClass(cComChilkatBinData)) To hoBdExp If (Not(IsComObjectCreated(hoBdExp))) Begin Send CreateComObject of hoBdExp End Get ComAppendEncoded Of hoBdMod sRsaMOD "hex" To iSuccess Get ComAppendEncoded Of hoBdExp sRsaEXP "hex" To iSuccess // Build the XML representation of the RSA public key Get Create (RefClass(cComChilkatXml)) To hoXml If (Not(IsComObjectCreated(hoXml))) Begin Send CreateComObject of hoXml End Set ComTag Of hoXml To "RSAPublicKey" Get ComGetEncoded Of hoBdMod "base64" To sTemp1 Send ComUpdateChildContent To hoXml "Modulus" sTemp1 Get ComGetEncoded Of hoBdExp "base64" To sTemp1 Send ComUpdateChildContent To hoXml "Exponent" sTemp1 // Load the RSA public key into a Chilkat public key object. Get Create (RefClass(cComChilkatPublicKey)) To hoPubkey If (Not(IsComObjectCreated(hoPubkey))) Begin Send CreateComObject of hoPubkey End Get ComGetXml Of hoXml To sTemp1 Get ComLoadFromString Of hoPubkey sTemp1 To iSuccess // Setup the RSA object for encryption and do it.. Get Create (RefClass(cComChilkatRsa)) To hoRsa If (Not(IsComObjectCreated(hoRsa))) Begin Send CreateComObject of hoRsa End Set ComVerboseLogging Of hoRsa To True Get pvComObject of hoPubkey to vPubkey Get ComImportPublicKeyObj Of hoRsa vPubkey To iSuccess // Use PKCSv1.5 padding Set ComOaepPadding Of hoRsa To False // Encrypt and return the string as hex. Set ComEncodingMode Of hoRsa To "hex" Move "key=abcdefghijkmnopq&iv=abcdefghijkmnopq&h=12345678&s=12345678" To sPlainText Get ComEncryptStringENC Of hoRsa sPlainText False To sCipherText Get ComLastMethodSuccess Of hoRsa To bTemp1 If (bTemp1 = False) Begin Get ComLastErrorText Of hoRsa To sTemp1 Showln sTemp1 Procedure_Return End // Note: The PKCSv1_5 padding incorporates random bytes. Therefore, the RSA encryption will produce different results each time -- all of which are valid // and decrypt correctly to the same original text. Showln sCipherText End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.