C# - Ungültige Zeichenabstände und ungültige Länge der Daten?

2 Antworten

Versuche mal cs via

cs.Dispose(); 

freizugeben. Hatte den Fehler gestern auch lösen können aber gerade heute musste meine VS Lizenz ablaufen. Wäre also so das, was mir im Moment einfiele.

Meine Decryption sieht so aus:

        public static string Decrypt(string cipherText)
        {
            string Key = "KEY";
            cipherText = cipherText.Replace(" ", "+");
            byte[] cipherBytes = Convert.FromBase64String(cipherText);
            using (Aes encryptor = Aes.Create())
            {
                Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(Key, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 });
                encryptor.Key = pdb.GetBytes(32);
                encryptor.IV = pdb.GetBytes(16);
                using (MemoryStream ms = new MemoryStream())
                {
                    using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateDecryptor(), CryptoStreamMode.Write))
                    {
                        cs.Write(cipherBytes, 0, cipherBytes.Length);
                        cs.FlushFinalBlock();
                    }
                    cipherText = Encoding.Unicode.GetString(ms.ToArray());
                }
            }
            return cipherText;
        }

Der Befehl:

cs.FlushFinalBlock();

Könnte ebenfalls funktionieren.

MfG

Woher ich das weiß:Berufserfahrung – 💻 Zertifizierter Sr. Cloud Engineer im IT-Consulting

regex9  16.02.2018, 01:52

Ein Dispose wird bereits von der Close-Methode angefordert, ist daher unnötig. Eleganter wäre es aber auf jeden Fall, wenn der FS, so wie du, using-Blöcke verwenden würde.

0

Ist denn die komplette XML-Datei verschlüsselt oder nur das Passwort? Wenn nur das Passwort verschlüsselt ist, musst Du die XML ganz normal einlesen und dann eben nur den Inhalt des Passworts entschlüsseln. Ansonsten kommt es natürlich zu solchen Exceptions, was Du versuchst, etwas zu entschlüsseln, was gar nicht verschlüsselt ist.