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
(Visual FoxPro) Duplicate PHP RSA EncryptionDemonstrates how to duplicate the following PHP function.
LOCAL lcRsaMOD LOCAL lcRsaEXP LOCAL loBdMod LOCAL loBdExp LOCAL lnSuccess LOCAL loXml LOCAL loPubkey LOCAL loRsa LOCAL lcPlainText LOCAL lcCipherText * 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 lcRsaMOD = "F0946D8F05604809E24B8CFFD30349CEA9E5F4D320BFD9E9AA1B088863F02C43E7997D37A3E27B4F8F359F1744DB6B20A437067C0D325A80660D12FF56A57673" * The RSA exponent in hex is "010001", which is 65537 in decimal. It's typically the exponent that is always used. lcRsaEXP = "010001" * Get the RSA modulus and exponent in base64. * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.BinData') loBdMod = CreateObject('Chilkat.BinData') * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.BinData') loBdExp = CreateObject('Chilkat.BinData') lnSuccess = loBdMod.AppendEncoded(lcRsaMOD,"hex") lnSuccess = loBdExp.AppendEncoded(lcRsaEXP,"hex") * Build the XML representation of the RSA public key * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Xml') loXml = CreateObject('Chilkat.Xml') loXml.Tag = "RSAPublicKey" loXml.UpdateChildContent("Modulus",loBdMod.GetEncoded("base64")) loXml.UpdateChildContent("Exponent",loBdExp.GetEncoded("base64")) * Load the RSA public key into a Chilkat public key object. * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.PublicKey') loPubkey = CreateObject('Chilkat.PublicKey') lnSuccess = loPubkey.LoadFromString(loXml.GetXml()) * Setup the RSA object for encryption and do it.. * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Rsa') loRsa = CreateObject('Chilkat.Rsa') loRsa.VerboseLogging = 1 lnSuccess = loRsa.ImportPublicKeyObj(loPubkey) * Use PKCSv1.5 padding loRsa.OaepPadding = 0 * Encrypt and return the string as hex. loRsa.EncodingMode = "hex" lcPlainText = "key=abcdefghijkmnopq&iv=abcdefghijkmnopq&h=12345678&s=12345678" lcCipherText = loRsa.EncryptStringENC(lcPlainText,0) IF (loRsa.LastMethodSuccess = 0) THEN ? loRsa.LastErrorText RELEASE loBdMod RELEASE loBdExp RELEASE loXml RELEASE loPubkey RELEASE loRsa CANCEL ENDIF * 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. ? lcCipherText RELEASE loBdMod RELEASE loBdExp RELEASE loXml RELEASE loPubkey RELEASE loRsa |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.