Rijndael 256 Şifreleme / c # ve php arasında şifresini?

0 Cevap

UPDATED

256'ya bir blok boyutunu kullanır bu yüzden C # kodu değişiklikleri yaptık. Ama şimdi merhaba dünya bu http://pastebin.com/5sXhMV11 gibi görünüyor ve ben binmek ve almak için) (Ben rtrim ile kullanmak ne çözemiyorum sonunda karışıklık.

Eğer IV bu tarafından, rastgele olmalı derken Ayrıca daha sonra bir kez ya da ben yanlış kodlanmış yolu aynı IV kullanmayın demek?

Tekrar teşekkürler!

Merhaba,

Ben C # şifrelenmiş PHP ile bir dize şifresini çalışıyorum. Ben mcrypt kullanarak şifresini PHP almak gibi olamaz ve bazı yardım lütfen ile yapabilirdi. Ben doğru IV ayarı değilim tahmin ediyorum bu yüzden php ile aşağıdaki hatayı alıyorum.

Error: The IV parameter must be as long as the blocksize

Her iki işlevi aynı şifre, anahtar, IV ve CBC moduna dizilişi:

encrypted text from c# = UmzUCnAzThH0nMkIuMisqg==
key 32 long = qwertyuiopasdfghjklzxcvbnmqwerty
iv 16 long = 1234567890123456

C #

    public static string EncryptString(string message, string KeyString, string IVString)
    {
        byte[] Key = ASCIIEncoding.UTF8.GetBytes(KeyString);
        byte[] IV = ASCIIEncoding.UTF8.GetBytes(IVString);

        string encrypted = null;
        RijndaelManaged rj = new RijndaelManaged();
        rj.Key = Key;
        rj.IV = IV;
        rj.Mode = CipherMode.CBC;

        try
        {
            MemoryStream ms = new MemoryStream();

            using (CryptoStream cs = new CryptoStream(ms, rj.CreateEncryptor(Key, IV), CryptoStreamMode.Write))
            {
                using (StreamWriter sw = new StreamWriter(cs))
                {
                    sw.Write(message);
                    sw.Close();
                }
                cs.Close();
            }
            byte[] encoded = ms.ToArray();
            encrypted = Convert.ToBase64String(encoded);

            ms.Close();
        }
        catch (CryptographicException e)
        {
            Console.WriteLine("A Cryptographic error occurred: {0}", e.Message);
            return null;
        }
        catch (UnauthorizedAccessException e)
        {
            Console.WriteLine("A file error occurred: {0}", e.Message);
            return null;
        }
        catch (Exception e)
        {
            Console.WriteLine("An error occurred: {0}", e.Message);
        }
        finally
        {
            rj.Clear();
        }

        return encrypted;
    }

PHP

var $mcrypt_cipher = MCRYPT_RIJNDAEL_256;
var $mcrypt_mode = MCRYPT_MODE_CBC;

function decrypt($key, $iv, $encrypted)
{
    $encrypted = base64_decode($encrypted);

    $decrypted = rtrim(mcrypt_decrypt($this->mcrypt_cipher, $key, $encrypted, $this->mcrypt_mode, $iv), "\0");;
    return $decrypted;
}

Teşekkürler

0 Cevap