Расшифровать TripleDES с PHP на C # не получая те же результаты

У меня есть функция PHP, которая прекрасно работает, расшифровывая сообщения TripleDes. Сейчас я пытаюсь перенести его на C #, но я получаю разные результаты. Я не уверен, что это не так. Это CBC, тот же ключ, тот же IV, тот же отступ и т. Д.

Функция PHP (работает нормально):

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;
}

Функция C # (она возвращает другой результат):

    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;
}

0

Решение

Извините, я чувствую себя глупо. Проблема в tdes.CreateEncryptor (); это, очевидно, должно быть tdes.CreateDecryptor ();

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]