Visual Basic 6.0
Visual Basic 6.0
Duplicate PHP RSA Encryption
See more RSA Examples
Demonstrates how to duplicate the following PHP function.Chilkat Visual Basic 6.0 Downloads
Dim success As Long
success = 0
' 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
Dim rsaMOD As String
rsaMOD = "F0946D8F05604809E24B8CFFD30349CEA9E5F4D320BFD9E9AA1B088863F02C43E7997D37A3E27B4F8F359F1744DB6B20A437067C0D325A80660D12FF56A57673"
' The RSA exponent in hex is "010001", which is 65537 in decimal. It's typically the exponent that is always used.
Dim rsaEXP As String
rsaEXP = "010001"
' Get the RSA modulus and exponent in base64.
Dim bdMod As New ChilkatBinData
Dim bdExp As New ChilkatBinData
success = bdMod.AppendEncoded(rsaMOD,"hex")
success = bdExp.AppendEncoded(rsaEXP,"hex")
' Build the XML representation of the RSA public key
Dim xml As New ChilkatXml
xml.Tag = "RSAPublicKey"
xml.UpdateChildContent "Modulus",bdMod.GetEncoded("base64")
xml.UpdateChildContent "Exponent",bdExp.GetEncoded("base64")
' Load the RSA public key into a Chilkat public key object.
Dim pubkey As New PublicKey
success = pubkey.LoadFromString(xml.GetXml())
' Setup the RSA object for encryption and do it..
Dim rsa As New ChilkatRsa
rsa.VerboseLogging = 1
success = rsa.UsePublicKey(pubkey)
' Use PKCSv1.5 padding
rsa.PkcsPadding = 1
' Encrypt and return the string as hex.
rsa.EncodingMode = "hex"
Dim plainText As String
plainText = "key=abcdefghijkmnopq&iv=abcdefghijkmnopq&h=12345678&s=12345678"
Dim cipherText As String
cipherText = rsa.EncryptStringENC(plainText,0)
If (rsa.LastMethodSuccess = 0) Then
Debug.Print rsa.LastErrorText
Exit Sub
End If
' 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.
Debug.Print cipherText