Padding is invalid and cannot be removed.

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • MilesDyson88588
    New Member
    • Jan 2010
    • 2

    Padding is invalid and cannot be removed.

    This is driving me insane. Ive checked every sample and cant see anything happening differently. I'm sending the file over a network so the key and IV bytes are sent with the file to be used to decrypt, but every time it goes to decrypt i get "Padding is invalid and cannot be removed." Please give me at least a clue someone.

    Edit : I know I posted this under the wrong language, my bad. Its c# not c

    here's my code:
    Code:
     public class SymetricEncryption
        {
            public static int decryptBytes(byte[] boggledData, byte[] key, byte[] IV, out byte[] DecryptedBytes)
            {
                RijndaelManaged symmetricKey = new RijndaelManaged();
                symmetricKey.Mode = CipherMode.CBC;
    
    
                ICryptoTransform decryptor = symmetricKey.CreateDecryptor(key, IV);
                MemoryStream memoryStream = new MemoryStream(boggledData);
                CryptoStream cryptoStream = new CryptoStream(memoryStream, decryptor, CryptoStreamMode.Read);
    
                DecryptedBytes = new byte[boggledData.Length];
                int read = cryptoStream.Read(DecryptedBytes, 0, boggledData.Length);
    
                memoryStream.Close();
                cryptoStream.Close();
                return read;
            }
            public static byte[] encryptBytes(byte[] Data, out byte[] key, out byte[] IV)
            {
    
                RijndaelManaged symmetricKey = new RijndaelManaged();
                symmetricKey.Mode = CipherMode.CBC;
                symmetricKey.GenerateKey();
                symmetricKey.GenerateIV();
                key = symmetricKey.Key;
                IV = symmetricKey.IV;
    
                ICryptoTransform encryptor = symmetricKey.CreateEncryptor(key, IV);
                MemoryStream memoryStream = new MemoryStream();
                CryptoStream cryptoStream = new CryptoStream(memoryStream, encryptor, CryptoStreamMode.Write);
                byte[] encryptedBytes = new byte[Data.Length];
                cryptoStream.Write(Data, 0, Data.Length);
    
    
                cryptoStream.FlushFinalBlock();
                byte[] cipherBytes = memoryStream.ToArray();
    
                memoryStream.Close();
                cryptoStream.Close();
    
                return cipherBytes;
    
            }
    Last edited by Frinavale; Jan 4 '10, 08:04 PM. Reason: Please post code in [code] ... [/code] tags. Added code tags.
  • MilesDyson88588
    New Member
    • Jan 2010
    • 2

    #2
    I solved my prob. It was in the transport, I sent an integer as 3 bytes...and forgot to read my file into my buffer. duh
    I shouldn't smoke as much weed while I code...

    Comment

    Working...