PHP Encryption & VB.net Decryption

后端 未结 4 607
有刺的猬
有刺的猬 2021-02-06 13:52

I\'m trying to do a simple task. Encypt a value in PHP and Decrypt it in my VB.net app. I figure I\'d use tripleDES or Rijdael 128 or 256

I though this should be simple

4条回答
  •  旧巷少年郎
    2021-02-06 14:30

    I also looked long and hard for solutions to this problem. Here is a complete set of code for both php and vb.net that will do what you are looking for. Should be pretty easy to translate to C# as well.

    ########################################
    # BEGIN PHP CODE
    ########################################
    
    
    orignal string: $text";
    echo "
    encrypted in php: $etext"; echo "
    decrypted in php: $dtext"; echo "
    encrypted in vb: $from_vb"; echo "
    from vb decrypted in php: $vtext"; echo "
    If you like it say thanks! richard dot varno at gmail dot com"; exit; function decryptRJ256($key,$iv,$string_to_decrypt) { $string_to_decrypt = base64_decode($string_to_decrypt); $rtn = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $string_to_decrypt, MCRYPT_MODE_CBC, $iv); $rtn = rtrim($rtn, "\0\4"); return($rtn); } function encryptRJ256($key,$iv,$string_to_encrypt) { $rtn = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $string_to_encrypt, MCRYPT_MODE_CBC, $iv); $rtn = base64_encode($rtn); return($rtn); } ?> ######################################## # END PHP CODE ######################################## ######################################## # BEGIN VB.NET CODE (console app) ######################################## Imports System Imports System.Text Imports System.Security.Cryptography Imports System.IO Module Module1 ' I blantantly stole, tweaked and happily used this code from: ' Lord of Ports http://www.experts-exchange.com/M_1736399.html Sub Main() 'Shared 256 bit Key and IV here Dim sKy As String = "lkirwf897+22#bbtrm8814z5qq=498j5" '32 chr shared ascii string (32 * 8 = 256 bit) Dim sIV As String = "741952hheeyy66#cs!9hjv887mxx7@8y" '32 chr shared ascii string (32 * 8 = 256 bit) Dim sTextVal As String = "Here is my data to encrypt!!!" Dim eText As String Dim dText As String eText = EncryptRJ256(sKy, sIV, sTextVal) dText = DecryptRJ256(sKy, sIV, eText) Console.WriteLine("key: " & sKy) Console.WriteLine() Console.WriteLine(" iv: " & sIV) Console.WriteLine("txt: " & sTextVal) Console.WriteLine("encrypted: " & eText) Console.WriteLine("decrypted: " & dText) Console.WriteLine("If you like it say thanks! richard dot varno at gmail dot com") Console.WriteLine("press any key to exit") Console.ReadKey(True) End Sub Public Function DecryptRJ256(ByVal prm_key As String, ByVal prm_iv As String, ByVal prm_text_to_decrypt As String) Dim sEncryptedString As String = prm_text_to_decrypt Dim myRijndael As New RijndaelManaged myRijndael.Padding = PaddingMode.Zeros myRijndael.Mode = CipherMode.CBC myRijndael.KeySize = 256 myRijndael.BlockSize = 256 Dim key() As Byte Dim IV() As Byte key = System.Text.Encoding.ASCII.GetBytes(prm_key) IV = System.Text.Encoding.ASCII.GetBytes(prm_iv) Dim decryptor As ICryptoTransform = myRijndael.CreateDecryptor(key, IV) Dim sEncrypted As Byte() = Convert.FromBase64String(sEncryptedString) Dim fromEncrypt() As Byte = New Byte(sEncrypted.Length) {} Dim msDecrypt As New MemoryStream(sEncrypted) Dim csDecrypt As New CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read) csDecrypt.Read(fromEncrypt, 0, fromEncrypt.Length) Return (System.Text.Encoding.ASCII.GetString(fromEncrypt)) End Function Public Function EncryptRJ256(ByVal prm_key As String, ByVal prm_iv As String, ByVal prm_text_to_encrypt As String) Dim sToEncrypt As String = prm_text_to_encrypt Dim myRijndael As New RijndaelManaged myRijndael.Padding = PaddingMode.Zeros myRijndael.Mode = CipherMode.CBC myRijndael.KeySize = 256 myRijndael.BlockSize = 256 Dim encrypted() As Byte Dim toEncrypt() As Byte Dim key() As Byte Dim IV() As Byte key = System.Text.Encoding.ASCII.GetBytes(prm_key) IV = System.Text.Encoding.ASCII.GetBytes(prm_iv) Dim encryptor As ICryptoTransform = myRijndael.CreateEncryptor(key, IV) Dim msEncrypt As New MemoryStream() Dim csEncrypt As New CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write) toEncrypt = System.Text.Encoding.ASCII.GetBytes(sToEncrypt) csEncrypt.Write(toEncrypt, 0, toEncrypt.Length) csEncrypt.FlushFinalBlock() encrypted = msEncrypt.ToArray() Return (Convert.ToBase64String(encrypted)) End Function End Module ######################################## # END VB.NET CODE ########################################

提交回复
热议问题