Расшифровка возвращает 16 байтов вместо 32, почему? - PullRequest
0 голосов
/ 15 декабря 2010

У меня есть следующий метод расшифровки, который, кажется, работает нормально, за исключением того, что он возвращает только 16 байтов вместо 32, если бы я смотрел на него слишком долго и не мог понять, что я сделал неправильно. Я надеюсь, что другой набор глаз поможет. Спасибо.

private string Decrypt(string dataToDecrypt, string password, string salt)
    {
        //Generate a Key based on a Password, Salt and HMACSHA1 pseudo-random number generator 
        Rfc2898DeriveBytes rfc2898 = new Rfc2898DeriveBytes(password, Encoding.UTF8.GetBytes(salt));

        //Create AES algorithm with 256 bit key and 128-bit block size 
        using (var aes = new AesManaged())
        {
            // These two values are hard coded in Silverlight
            //aes.Mode = CipherMode.CBC;
            //aes.Padding = PaddingMode.PKCS7;
            aes.Key = rfc2898.GetBytes(aes.KeySize / 8);
            aes.IV = rfc2898.GetBytes(aes.BlockSize / 8);

            //Create Memory and Crypto Streams 
            using (var memoryStream = new MemoryStream())
            {
                using (var cryptoStream = new CryptoStream(memoryStream, aes.CreateDecryptor(), CryptoStreamMode.Write))
                {

                    //Decrypt Data 
                    byte[] data = Convert.FromBase64String(dataToDecrypt);
                    cryptoStream.Write(data, 0, data.Length);
                    // cryptoStream.FlushFinalBlock();

                    //Return Decrypted String 
                    byte[] decryptBytes = memoryStream.ToArray();
                    string decrypted = Encoding.UTF8.GetString(decryptBytes, 0, decryptBytes.Length);
                    return decrypted;

                }       // using (cryptoStream = new CryptoStream(memoryStream, aes.CreateDecryptor(), CryptoStreamMode.Write))

            }       // using (memoryStream = new MemoryStream())

        }       // using (aes = new AesManaged())

    }       // string Decrypt(string dataToDecrypt, string password, string salt)

1 Ответ

0 голосов
/ 15 декабря 2010

Ваш размер блока составляет 128 бит.Если вы декодируете только один блок, вы получите 16 байтов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...