Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.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解密到C#不会得到相同的结果_C#_Php_Encryption_Tripledes - Fatal编程技术网

将三元组从PHP解密到C#不会得到相同的结果

将三元组从PHP解密到C#不会得到相同的结果,c#,php,encryption,tripledes,C#,Php,Encryption,Tripledes,我有一个PHP函数,可以很好地解密TripleDes消息。现在我尝试将其移植到C#,但得到的结果不同。我不确定这是怎么回事。它是CBC,相同的键,相同的IV,相同的填充,等等 PHP函数(工作正常): C#函数(返回不同的结果): 对不起,我觉得自己很愚蠢。问题出在tdes.CreateEncryptor()中;这显然需要是tdes.CreateDecryptor() public static function DecryptInstallationCode($enc) { $td

我有一个PHP函数,可以很好地解密TripleDes消息。现在我尝试将其移植到C#,但得到的结果不同。我不确定这是怎么回事。它是CBC,相同的键,相同的IV,相同的填充,等等

PHP函数(工作正常):

C#函数(返回不同的结果):


对不起,我觉得自己很愚蠢。问题出在tdes.CreateEncryptor()中;这显然需要是tdes.CreateDecryptor()

public static function DecryptInstallationCode($enc)
{

    $td = mcrypt_module_open(MCRYPT_3DES, '', MCRYPT_MODE_CBC, '');

    $iv = '12345678';
    $key = '123456789012345678901234';

    $bin = base64_decode($enc); 

    mcrypt_generic_init($td, $key, $iv);
    $str = mdecrypt_generic($td, $bin);
    mcrypt_generic_deinit($td);
    mcrypt_module_close($td);
    return $str; 
}
    public static string DecryptInstallationCode(string enc)
    {
        const string iv = "12345678";
        const string key = "123456789012345678901234";

        var bin = Convert.FromBase64String(enc);    

        TripleDES tdes = TripleDES.Create();
        tdes.IV = Encoding.ASCII.GetBytes(iv);
        tdes.KeySize = 192;
        tdes.Key = Encoding.ASCII.GetBytes(key);
        tdes.Mode = CipherMode.CBC;
        tdes.Padding = PaddingMode.Zeros;
        var ict = tdes.CreateEncryptor();

        var result = ict.TransformFinalBlock(bin, 0, bin.Length);

        var strResult = Encoding.UTF8.GetString(result);

        return strResult;
    }