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:
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: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)); } }
Sollte eigentlich so funktionieren, trotztem wird immer eine Ausnahme erzeugt, die mir sagt das das eingegebene Array zu lang ist?!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 } } }
Habe ich einen Denkfehler, und wenn nein, gibts eine andere Möglichkeit eine Stringliste in ein Byte Array zu konvertieren?
Danke schonmal,
Tele![]()


Zitieren