VB数据的PHP解密
我从几年前写过一本图书馆的人那里接管了一项任务。该库采用VB和ASP 我在PHP中工作,我需要解密在VB中加密后存储在数据库中的字符串负载: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
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-我曾经尝试过它,但又进行了一次尝试,结果它复活了。我已经编辑了我的问题,以显示完整的代码,以防其他人需要它。谢谢你的帮助。虽然上面很有趣$块已定义但从未使用过!很高兴你成功了:)