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:
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;
}
Comment