Различные результаты шифрования RC2 между C # и переполнением стека

Я пытаюсь достичь того же результата, которого достигаю с помощью кода на C #, используя PHP. Алгоритм шифрования RC2, используя RC2CryptoServiceProvider для .NET и mcrypt() для PHP.

Это часть C #:

public static string encryptRC2(string datastring, string keystring, string ivstring)
{
byte[] bytes = Encoding.UTF8.GetBytes(datastring);
byte[] rgbKey = Encoding.ASCII.GetBytes(keystring);
byte[] rgbIV = Encoding.ASCII.GetBytes(ivstring);
MemoryStream stream = new MemoryStream();
RC2CryptoServiceProvider provider = new RC2CryptoServiceProvider
{
KeySize = 0x40,
BlockSize = 0x40
};
CryptoStream stream2 = new CryptoStream(stream, provider.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
stream2.Write(bytes, 0, bytes.Length);
stream2.FlushFinalBlock();
return Convert.ToBase64String(stream.ToArray());
}

Это часть PHP:

function encryptRC2($datastring, $keystring, $ivstring) {
$encrypted = mcrypt_encrypt(MCRYPT_RC2, $keystring, $datastring, MCRYPT_MODE_CBC, $ivstring);
return base64_encode($encrypted);
}

Я пытался:

  • Принудительное кодирование с mb_convert_string() соответствие стороне C #
  • Изменение режима шифрования (даже если по умолчанию для C # это CBC, никак)
  • Пробовать base64_encode() strtoupper() строка

Я не могу изменить алгоритм C #, мне нужно сопоставить тот же результат с PHP.

1

Решение

Задача ещё не решена.

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

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

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