PHP解密VB数据

时间:2016-11-08 11:44:40

标签: 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 = 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中解密字符串的想法吗?我已经尝试了这里提出的各种想法,但没有一个能够提供我应该得到的实际数据!

1 个答案:

答案 0 :(得分:0)

(代表OP发布)

我通过考虑Mark在此页面上的建议解决了这个问题。谢谢马克。以防万一其他人挣扎:

$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);
相关问题