Rijndael ile çapraz platform (php için C #. NET) şifreleme / şifre çözme

0 Cevap

I'm currently having a bit of problem with decrypting a message encrypted by php mcrypt. The php code is as following:

<?php
  //$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC);
  $iv = "45287112549354892144548565456541";
  $key = "anjueolkdiwpoida";
  $text = "This is my encrypted message";
  $crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_CBC, $iv);
  $crypttext = urlencode($crypttext);
  $crypttext64=base64_encode($crypttext);
  print($crypttext64) . "\n<br/>";
?>

Şifrelenmiş mesaj daha sonra bir ASP.NET platformun (C #) gönderilir. Ancak, şifre çözme sırasını (UrlDecode base64 decode) istinat sorunu yaşıyorum. (Iv ve anahtar php gibi aynı) aşağıdaki gibi ASP.NET vardı kodu:

public string Decode(string str)
{
    byte[] decbuff = Convert.FromBase64String(str);
    return System.Text.Encoding.UTF8.GetString(decbuff);
}

static public String DecryptRJ256(string cypher, string KeyString, string IVString)
{

    string sRet = "";
    RijndaelManaged rj = new RijndaelManaged();
    UTF8Encoding encoding = new UTF8Encoding();


    try
    {
        //byte[] message = Convert.FromBase64String(cypher);
        byte[] message = encoding.GetBytes(cypher);

        byte[] Key = encoding.GetBytes(KeyString);
        byte[] IV = encoding.GetBytes(IVString);

        rj.Padding = PaddingMode.Zeros;
        rj.Mode = CipherMode.CBC;
        rj.KeySize = 256;
        rj.BlockSize = 256;
        rj.Key = Key;
        rj.IV = IV;
        MemoryStream ms = new MemoryStream(message);

        using (CryptoStream cs = new CryptoStream(ms, rj.CreateDecryptor(Key, IV), CryptoStreamMode.Read))
        {
            using (StreamReader sr = new StreamReader(cs))
            {
                sRet = sr.ReadToEnd();
            }
        }

    }
    finally
    {
        rj.Clear();
    }

    return sRet;


}

string temp = DecryptRJ256(Server.UrlDecode(Decode(cypher)), keyString, ivString);

Ben yaşıyorum sorun ben php gelen şifreli mesajı aldı sonra, ben bu yüzden UrlDecode için byte [] içine dönüştürülür ve daha sonra UTF8 kodlanmış bir dize geri dönüştürülür olmasıdır. sonra ben byte [] geri dize dönüştürülür ve şifre çözme sürecinde koştu işlevi sonucu beslemek. Ancak, ... herhangi bir fikirleri istenilen sonuç alınamıyor?

Şimdiden teşekkürler.

0 Cevap