Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: nevachana en 24 Agosto 2015, 15:19 pm



Título: Error en AES El relleno entre caracteres no es válido y no se puede quitar.
Publicado por: nevachana en 24 Agosto 2015, 15:19 pm
Hola  :D,estoy intentando cifrar la conexion entre mi client y servidor,pero al enviar o recibir paquetes me da este error:
El relleno entre caracteres no es válido y no se puede quitar.

Código
  1. doAction(AES_Decrypt(buffer, Encoding.Default.GetBytes(this.keyG)).ToString());
  2.  
  3.  
  4. public byte[] AES_Decrypt(byte[] bytesToBeDecrypted, byte[] passwordBytes)
  5.        {
  6.            byte[] decryptedBytes = null;
  7.            byte[] saltBytes = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 };
  8.            using (MemoryStream ms = new MemoryStream())
  9.            {
  10.                using (RijndaelManaged AES = new RijndaelManaged())
  11.                {
  12.                    AES.KeySize = 256;
  13.                    AES.BlockSize = 128;
  14.                    var key = new Rfc2898DeriveBytes(passwordBytes, saltBytes, 1000);
  15.                    AES.Key = key.GetBytes(AES.KeySize / 8);
  16.                    AES.IV = key.GetBytes(AES.BlockSize / 8);
  17.                    AES.Mode = CipherMode.CBC;
  18.                    using (var cs = new CryptoStream(ms, AES.CreateDecryptor(), CryptoStreamMode.Write))
  19.                    {
  20.                        cs.Write(bytesToBeDecrypted, 0, bytesToBeDecrypted.Length);
  21.                        cs.Close(); // Aquí me salta la exepcion
  22.                    }
  23.                    decryptedBytes = ms.ToArray();
  24.                }
  25.            }
  26.            return decryptedBytes;
  27.        }

La clave que estoy usando es: YmyWRtxxc5¿Jun/y%2WH%jyM1f , puede que sea por que tiene caracteres raros?