VB数据的PHP解密

VB数据的PHP解密,php,vb.net,encryption,Php,Vb.net,Encryption,我从几年前写过一本图书馆的人那里接管了一项任务。该库采用VB和ASP 我在PHP中工作,我需要解密在VB中加密后存储在数据库中的字符串负载: Public Function Encrypt(ByVal myString As Object) As String If IsDBNull(myString) Or IsNothing(myString) Then Return String.Empty Else If myString.Length

我从几年前写过一本图书馆的人那里接管了一项任务。该库采用VB和ASP

我在PHP中工作,我需要解密在VB中加密后存储在数据库中的字符串负载:

 Public Function Encrypt(ByVal myString As Object) As String
    If IsDBNull(myString) Or IsNothing(myString) Then
        Return String.Empty
    Else
        If myString.Length = 0 Then
            Return ""
        Else
            cryptDES3.Key = cryptMD5Hash.ComputeHash(ASCIIEncoding.ASCII.GetBytes(myKey))
            cryptDES3.Mode = CipherMode.ECB
            Dim desdencrypt As ICryptoTransform = cryptDES3.CreateEncryptor()
            Dim MyASCIIEncoding As ASCIIEncoding = New ASCIIEncoding()
            Dim buff() As Byte = ASCIIEncoding.ASCII.GetBytes(myString)
            Return Convert.ToBase64String(desdencrypt.TransformFinalBlock(buff, 0, buff.Length))
        End If

    End If

End Function
VB中适当的解密函数如下所示:

Public Function Decrypt(ByVal myString As Object) As String
    Try
        If IsDBNull(myString) Or IsNothing(myString) Then
            Return String.Empty
        Else
            If myString.Length = 0 Then
                Return ""
            Else
                cryptDES3.Key = cryptMD5Hash.ComputeHash(ASCIIEncoding.ASCII.GetBytes(myKey))
                cryptDES3.Mode = CipherMode.ECB
                Dim desdencrypt As ICryptoTransform = cryptDES3.CreateDecryptor()
                Dim buff() As Byte = Convert.FromBase64String(myString)
                Decrypt = ASCIIEncoding.ASCII.GetString(desdencrypt.TransformFinalBlock(buff, 0, buff.Length))
            End If
        End If
    Catch ex As Exception
        Return "DB Error"
    End Try

End Function
有人能提供一个如何在PHP中解密字符串的想法吗?我尝试过这里提出的各种想法,但没有一个能产生我应该得到的实际数据

(代表OP发布)

我在这一页上考虑了马克的建议,解决了这个问题。谢谢你,马克。以防其他人挣扎:

$data = "my_string";
$secret  = "my_secret";
$key = md5(utf8_encode($secret), true);
$key .= substr($key, 0, 8);
$data = base64_decode($data);
$data = mcrypt_decrypt('tripledes', $key, $data, 'ecb');
$block = mcrypt_get_block_size('tripledes', 'ecb');
$len = strlen($data);
$pad = ord($data[$len-1]);
echo "Decrypted string is: " . substr($data, 0, strlen($data) - $pad);
(代表OP发布)

我在这一页上考虑了马克的建议,解决了这个问题。谢谢你,马克。以防其他人挣扎:

$data = "my_string";
$secret  = "my_secret";
$key = md5(utf8_encode($secret), true);
$key .= substr($key, 0, 8);
$data = base64_decode($data);
$data = mcrypt_decrypt('tripledes', $key, $data, 'ecb');
$block = mcrypt_get_block_size('tripledes', 'ecb');
$len = strlen($data);
$pad = ord($data[$len-1]);
echo "Decrypted string is: " . substr($data, 0, strlen($data) - $pad);

看起来它使用的是加密——您是否尝试过:作为解决方法,您是否可以将
decrypt
函数编写为REST服务,可以通过HTTP从PHP调用?或者根据.NET内核编译它,并将其作为PHP的可执行文件运行?@MarkPhillips Good shout-我曾经尝试过它,但又进行了一次尝试,结果它复活了。我已经编辑了我的问题,以显示完整的代码,以防其他人需要它。谢谢你的帮助。虽然上面很有趣$块已定义但从未使用过!很高兴你能让它工作:)看起来像是在使用加密-你试过了吗:作为解决办法,你能把
decrypt
函数写成REST服务吗,可以通过HTTP从PHP调用?或者根据.NET内核编译它,并将其作为PHP的可执行文件运行?@MarkPhillips Good shout-我曾经尝试过它,但又进行了一次尝试,结果它复活了。我已经编辑了我的问题,以显示完整的代码,以防其他人需要它。谢谢你的帮助。虽然上面很有趣$块已定义但从未使用过!很高兴你成功了:)