Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用PHP解密用VB加密_Php_Vb.net_Encryption_Tripledes - Fatal编程技术网

用PHP解密用VB加密

用PHP解密用VB加密,php,vb.net,encryption,tripledes,Php,Vb.net,Encryption,Tripledes,我必须用PHP解密用VB加密的数据。 当我解密数字时,我没有问题,但当我解密文本时,我只得到前8个字符,然后是随机字符。 这是关键。”a1R@f7D$" 这就是我试图解密的内容: LwEe+sQCn63m9kjtqiy67ul5R1Ng7SZPVO4YYxQvZtUZBwNTb+Ey0qCNsrczI4jN 我明白了: {Preinsc]hn��m�ȕ�!��^߇� $! �E&;�e^#S�)6Ui�4� 我试着和麦克里普特·里伊恩代尔256和欧洲央行合作,但没有一个对我有效 f

我必须用PHP解密用VB加密的数据。 当我解密数字时,我没有问题,但当我解密文本时,我只得到前8个字符,然后是随机字符。 这是关键。”a1R@f7D$" 这就是我试图解密的内容:

LwEe+sQCn63m9kjtqiy67ul5R1Ng7SZPVO4YYxQvZtUZBwNTb+Ey0qCNsrczI4jN
我明白了:

{Preinsc]hn��m�ȕ�!��^߇� $!  �E&;�e^#S�)6Ui�4�
我试着和麦克里普特·里伊恩代尔256和欧洲央行合作,但没有一个对我有效

function decrypt($data ){
   $encryption_key = "a1R@f7D$";
    $data = urldecode($data);
    $key = md5(utf8_encode($encryption_key), true);
    //Take first 8 bytes of $key and append them to the end of $key.
    $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]);
    return substr($data, 0, strlen($data) - $pad);
}
这是对以下内容进行加密的函数:


Public Shared Function tryingTripleDes (ByVal value As String, ByVal key As String) As String

        Dim des As New Security.Cryptography.TripleDESCryptoServiceProvider

        des.IV des.IV = New Byte(7) {}

        Dim pdb As New Security.Cryptography.PasswordDeriveBytes(key, New Byte(-1) {})

        des.Key = pdb.CryptDeriveKey("RC2", "MD5", 128, New Byte(7) {})

        Dim ms As New IO.MemoryStream((value.Length * 2) - 1)

        Dim encStream As New Security.Cryptography.CryptoStream(ms, des.CreateEncryptor(), Security.Cryptography.CryptoStreamMode.Write)

        Dim plainBytes As Byte() = Text.Encoding.UTF8.GetBytes(value)

        encStream.Write(plainBytes, 0, plainBytes.Length)

        encStream.FlushFinalBlock()

        Dim encryptedBytes(CInt(ms.Length - 1)) As Byte

        ms.Position = 0

        ms.Read(encryptedBytes, 0, CInt(ms.Length))

        encStream.Close()

        Return Convert.ToBase64String(encryptedBytes)

    End Function

如果密文使用全零字节IV进行CBC加密,则通常会发生这种情况。其他模式也可以工作,但CBC是最有可能的。您的密钥和密码是正确的,否则您只会得到垃圾作为回报-当然不是易读的文本

请注意,
MCRYPT_RIJNDAEL_256
甚至不是AES,因此尝试这样做是没有用的,您应该使用具有正确大小的密钥的
MCRYPT_RIJNDAEL_128
来获取AES


我不会用零字节IV和类似3DES的不推荐的密码讨论CBC的安全性。这不是一个好主意,尤其不是为了交通安全。

{Preinsc
正确的字符串?我想你可以使用
substr
。不过我更愿意正确解密。不要使用
utf8\u encode
,该字符串不是
ISO-8859-1
…或者可能是我误读了
是否有理由只获取前8个字符?
,你的意思不是
一种方式
?字符串是supossed类似于{table.field}=44444,但我只得到了前8个字符show字符串是加密的吗?它的字节是通过
编码.UTF8.GetBytes()获得的还是其他编码?是的,我已经添加了该函数