Padding is invalid and cannot be removed [SOLVED]

di il
5 risposte

Padding is invalid and cannot be removed [SOLVED]

Buongiorno, 

da poco ho iniziato a lavorare con C# a un codice per criptare e decriptare dei file. Inizialmente non ho riscontrato nessun problema, ma nella fase di decriptazione mi sto imbattendo nel seguente errore “Padding is invalid and cannot be removed”. è da giorni che cerco una soluzione, ma ribadisco non essendo molto pratico non so come risolvere il problema. Se qualcuno riuscisse ad aiutarmi ne sarei molto grato.

Questa è la porzione di codice legata al dectipt

    private void button1_Click(object sender, EventArgs e)
 {
     string user = textBox1.Text;
     string pass = textBox2.Text;

     
     string chiave = "airj54htdnb,67ld3jfhn57s7gj3k'l4";
     string vettore = "94jf83iwjg38fja8";

     StreamReader sr = new StreamReader(@"C:\MyPasswordManager\Username.txt");
     
     string SR = sr.ReadLine();
     byte[] UserCriptato = Convert.FromBase64String(SR);
     AesCryptoServiceProvider aes = new AesCryptoServiceProvider();
     aes.BlockSize = 128;
     aes.KeySize = 256;
     aes.Key = ASCIIEncoding.ASCII.GetBytes(chiave);
     aes.Key = ASCIIEncoding.ASCII.GetBytes(vettore);
     aes.Mode = CipherMode.CBC;
     aes.Padding = PaddingMode.PKCS7;
     ICryptoTransform tdc = aes.CreateDecryptor(aes.Key, aes.IV);
     // L'errore me lo indica nella riga di sotto
     byte[] UserDecriptato = tdc.TransformFinalBlock(UserCriptato, 0, UserCriptato.Length);
     tdc.Dispose();

     string USER = ASCIIEncoding.ASCII.GetString(UserDecriptato);
     

     StreamReader sr1 = new StreamReader(@"C:\MyPasswordManager\Password.txt");
     string SR1 = sr1.ReadLine();
     byte[] PassCriptata = Convert.FromBase64String(SR1);
     AesCryptoServiceProvider aes1 = new AesCryptoServiceProvider();
     aes1.BlockSize = 128;
     aes1.KeySize = 256;
     aes1.Key = ASCIIEncoding.ASCII.GetBytes(chiave);
     aes1.Key = ASCIIEncoding.ASCII.GetBytes(vettore);
     aes1.Mode = CipherMode.CBC;
     aes1.Padding = PaddingMode.PKCS7;
     ICryptoTransform tdc1 = aes1.CreateDecryptor(aes1.Key, aes1.IV);
     // Probabilmente anche nella riga seguente ci sarà lo stesso errore :(
     byte[] PassDecriptata = tdc1.TransformFinalBlock(PassCriptata, 0, PassCriptata.Length);
     tdc1.Dispose();

     string PASS = ASCIIEncoding.ASCII.GetString(PassDecriptata);
     

     // Verifico le credenziali
     if (user == USER && pass == PASS)
     {
         Form4 form4 = new Form4();
         form4.Show();
         this.Hide();
     }
     else
     {
         MessageBox.Show("Nome utente o password errati, riprova");
     }
 }

5 Risposte

Devi accedere o registrarti per scrivere nel forum
5 risposte