2010-12-15 8 views
0

Ich habe die folgende Entschlüsselungsmethode scheint gut zu funktionieren, außer es gibt nur 16 Bytes statt 32 es sollte ich habe es zu lange starrte und kann nicht herausfinden, was ich falsch gemacht habe. Ich hoffe, dass andere Augen helfen werden. Vielen Dank.Entschlüsselung gibt 16 Bytes statt 32 zurück, warum?

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) 

Antwort

0

Ihre Blockgröße beträgt 128 Bit. Wenn Sie nur einen Block dekodieren, erhalten Sie 16 Bytes.

+0

Hallo Yann, danke für die Eingabe. Ich kann BlockSize nicht größer einstellen, es ist nicht erlaubt, also wie soll es gehen, um mehr als einen Block zu dekodieren? –

+0

@WillTartak: Das hängt vollständig vom verwendeten Verschlüsselungsmodus ab. EZB? CBC? Klickrate? XTR? CFB? Was versuchst du zu erreichen, dass eine höhere (und gut gestaltete) Crypto-API nicht bietet? –

Verwandte Themen