Hi,
ich schreibe grade ein Programm namens "Passworttresor"
Der Benutzer kann dort Passwörter abspeichern. Ich verschlüssele die Passwörter mit DES und speichere sie in eine Datei ab:
Code:
public void verschluesselnUndSpeichern(string input)
        {
            try
            {
                // MemoryStream Objekt erzeugen
                MemoryStream memoryStream = new MemoryStream();
                // CryptoStream Objekt erzeugen und den Initialisierungs-Vektor
                // sowie den Schlüssel übergeben.
                CryptoStream cryptoStream = new CryptoStream(
                memoryStream, new TripleDESCryptoServiceProvider().CreateEncryptor(this.key, this.iv), CryptoStreamMode.Write);
                // Eingabestring in ein Byte-Array konvertieren
                byte[] toEncrypt = new ASCIIEncoding().GetBytes(input);
                // Byte-Array in den Stream schreiben und flushen.
                cryptoStream.Write(toEncrypt, 0, toEncrypt.Length);
                cryptoStream.FlushFinalBlock();
                // Ein Byte-Array aus dem Memory-Stream auslesen
                byte[] ret = memoryStream.ToArray();
                // Stream schließen.
                cryptoStream.Close();
                memoryStream.Close();
                string tempAuslese;
                StreamReader tempReader = new StreamReader(pfad);
                tempAuslese = tempReader.ReadToEnd();
                tempReader.Close();
                for (int i = 0; i < ret.Length; i++)
                {
                    tempAuslese += Convert.ToString(ret[i]);
                }
                tempAuslese += "\n";
                StreamWriter speichern = new StreamWriter(pfad);
                speichern.Write(tempAuslese);
                speichern.Flush();
                speichern.Close();
            }
            catch (CryptographicException e)
            {
                MessageBox.Show(String.Format(CultureInfo.CurrentCulture, "Fehler beim Verschlüsseln: {0}", e.Message));
            }
        }
Heißt, beim einlesen liegen die Passwörter im Zahlenwirrwarr vor. Um das ganze jetzt wieder zu dechiffrieren, müssen die Passwörter als Byte Array vorliegen. Das mache ich so:
Code:
if (txtTresorschlüssel.Text != "test")
                MessageBox.Show("Falscher Tresorschlüssel!");
            else
            {
                Tresor tresor = new Tresor();
                string pfad = Thread.GetDomain().BaseDirectory;
                StreamReader laden = new StreamReader(pfad + "\\psw.sapp");
                List<string> data = new List<string>();
                string temp = laden.ReadToEnd();
                data = temp.Split('\n').ToList<string>();
                for (int i = 0; i < data.Count; i++)
                {
                    try
                    {
                        listPasswörter.Items.Add(tresor.entschluesseln(Encoding.GetEncoding(1252).GetBytes(data[i])));
                    }
                    catch
                    {
                        //Leer da bei Ausnahme die Tresorklasse eine Fehlermeldung erstellt und ausgibt
                    }
                }
            }
Sollte eigentlich so funktionieren, trotztem wird immer eine Ausnahme erzeugt, die mir sagt das das eingegebene Array zu lang ist?!
Habe ich einen Denkfehler, und wenn nein, gibts eine andere Möglichkeit eine Stringliste in ein Byte Array zu konvertieren?

Danke schonmal,
Tele