C# Passwort ändern und speichern?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Das mach ich zwar selten das ich den code reinstelle aber hier:

Bitte verstehen was ich da gemacht habe bevor dus blind reinkopierst

        static void Main(string[] args)
        {
            string path = @"C:\...\pw.txt"; //Pfad zur txt
            string Passwort;
            if (File.Exists(path))
            {
                Console.WriteLine("Passwort eingeben: ");
                string pwe = Console.ReadLine();
                using (StreamReader sr = new StreamReader(path))
                {
                    Passwort = sr.ReadLine();                
                }    
                
                if(Passwort == pwe)
                {
                    Console.WriteLine("Passwort Richtig ");
                }
                else
                {
                    Console.WriteLine("Passwort Falsch");
                }
            }

            else
            {
                Console.WriteLine("Passwort erstellen ");
                string pwer = Console.ReadLine();
                using (System.IO.StreamWriter file = new System.IO.StreamWriter(path, true))
                {
                    file.WriteLine(pwer);
                }

            }

        }

Woher ich das weiß:Berufserfahrung

Ollig00 
Fragesteller
 07.08.2018, 10:22

@Benni517

Danke soweit bis hierhin, hat mir viel geholfen!

Ist das auch richtig?:

string path = System.Environment.SpecialFolder.Desktop + "pw.txt";

Ich hab das so ausprobiert, da das andere nicht funktioniert: "Zugriff verweigert"

0
Sp4ghett1C0de  07.08.2018, 10:26
@Ollig00

string path = System.Environment.SpecialFolder.Desktop + @"\pw.txt";

0
Ollig00 
Fragesteller
 07.08.2018, 10:31
@Sp4ghett1C0de

Jetzt sagt er mir bei

using (System.IO.StreamWriter file = new System.IO.StreamWriter(path, true))

folgendes:

System.IO.DirectoryNotFoundException: "Ein Teil des Pfades "c:\users\user\source\repos\Änderungen speichern\Änderungen speichern\bin\Debug\Desktop\pw.txt" konnte nicht gefunden werden."
0
Sp4ghett1C0de  07.08.2018, 10:48
@Ollig00

Ja da stimmt was mit dem Pfad nicht wo ers abspeichern soll bzw lesen, das was jetzt kommt nicht sich Troubleshooting und das musst du selbst hinbekommen.. geb den pfad doch einfach mal in der Konsole aus und schau ob er stimmt. Und solche Probleme kommen immer wieder und da kann ich dir auch nicht jedes mal helfen. Normalerweise schick ich keine Code wenn schick ich immer nur die logik da DU ja verstehen musst was du da tust. Du kannst zwar auch einfach immer alles kopieren ohne zu verstehen was passiert aber dann solltest du das nicht programmieren nennen sonder copy & paste. PS: das "\" bei pw.txt muss weg war mein Fehler.

0
Ollig00 
Fragesteller
 07.08.2018, 10:54
@Sp4ghett1C0de

Ich verstehe das schon... Ab und zu mache ich ebenfalls Fehler. Das mit dem "\" hab ich sogar schon getan. Ein wenig seltsam ist es, das die Textdatei in c:\users\user\source\repos\Änderungen speichern\Änderungen speichern\bin\Debug als "Desktoppw.txt" abgespeichert wird.

Gut ist, das das wenigstens funktioniert (wenn auch in einem falschen Pfad), dass das Passwort dauerhaft gespeichert bleibt.

Ich versuche gerade selbst das Problem zu fixen, dass es auf dem Desktop abgespeichert wird...

Als Update:

using System;
using System.IO;
using System.Threading;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Änderungen_speichern
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Title = "Änderungen speichern";
            start:
            string path = System.Environment.SpecialFolder.Desktop + "pw.txt";
            string Passwort;
            if (File.Exists(path))
            {
                Console.WriteLine("Passwort eingeben: ");
                string pwe = Console.ReadLine();
                using (StreamReader sr = new StreamReader(path))
                {
                    Passwort = sr.ReadLine();
                }
                if (Passwort == pwe)
                {
                    Console.WriteLine("Passwort Richtig ");
                    Console.ReadLine();
                }
                else
                {
                    Console.WriteLine("Passwort Falsch");
                    Console.ReadLine();
                    goto start;
                }
            }
            else
            {
                Console.WriteLine("Passwort erstellen ");
                string pwer = Console.ReadLine();
                using (System.IO.StreamWriter file = new System.IO.StreamWriter(path, true))
                {
                    file.WriteLine(pwer);
                }
            }
        }
    }
}

Noch einmal der neue Code

0
Sp4ghett1C0de  07.08.2018, 11:10
@Ollig00
string path = System.Environment.SpecialFolder.Desktop + @"pw.txt";

Also so sollte es gehen.

0
Ollig00 
Fragesteller
 07.08.2018, 11:12
@Sp4ghett1C0de

Nein, funktioniert nicht. Passiert immer noch das Gleiche: Es wird eine Textdatei "Desktoppw.txt" erstellt :/

0
Ollig00 
Fragesteller
 07.08.2018, 11:37
@Sp4ghett1C0de

Gut. Soweit hat dann alles funktioniert. Habe noch eine "Passwort-Ändern-Funktion" eingefügt, die die vorhandene Datei löscht, nachdem ein neues Passwort eingegeben wurde. Ich denke soweit hab ich alles was ich brauche. Danke für die schnelle Hilfe! :)

MfG

Ollig00

1

Du solltest dir zuerst mal überlegen, wo das Passwort abgelegt werden soll. Im Arbeitsspeicher macht es keinen Sinn, da das beim Beenden des Programms dann wieder gelöscht ist.
Wenn du das raushast, dann fragst du bei Start des Programms den Nutzernamen ab (oder nur das PW, wenn es eine Singleuserapp ist). Wenn es keinen Eintrag gibt, dann wird ein neues Passwort zur Eingabe verlangt.
Ist eines verhanden, soll der Anwender es zum Abgleich eingeben. Soll das PW nur für den nächsten Start gelten, dann muss es nach erfolgreicher Anmeldung wieder gelöscht werden.

Woher ich das weiß:eigene Erfahrung – Ich habe selber lange im PC gearbeitet

Ollig00 
Fragesteller
 07.08.2018, 10:08

Das Passwort soll permanent existieren (natürlich wenn man es ändert, soll es überschrieben werden). Wo bzw wie ich es genau abspeichern soll ist fraglich. Was wäre denn ein guter Speicherort? Und wie mach ich denn dann somit auch das Passwort permanent und änderbar? Hast du dazu evtl. einen Code? (Ich muss den ganzen Kram noch lernen ._.)

0
HierStehtEtwas  07.08.2018, 10:15
@Ollig00

Das Passwort würde ich nicht unverschlüsselt speichern. Es wäre also gut, wenn du vor dem Speichern das Passwort verschlüssen würdest. Wenn du das Passwort mit dem eingegebenen Passwort vergleichen möchtest, musst du dasselbe Verschlüsselungsverfahren an das eingegebene Passwort anwenden und mit dem gespeicherten verschlüsselten Passwort vergleichen.

0
Ollig00 
Fragesteller
 07.08.2018, 10:24
@HierStehtEtwas

Und wie kann ich ein Passwort verschlüsseln? Umwandeln in Hexadezimalzahlen oder sowas?

0
ZaoDaDong  07.08.2018, 10:25
@Ollig00

Schon effektiv hashen, mit Bcrypt oder ähnlichem. Wenn es dir nur um Üben geht bzw. erstellen dieser Testanwendung, dann kannst du auch erstmal Base64 nehmen oder sowas, das sollte schneller zu implementieren sein. Dann kannst du auch nachträglich etwas effektiveres einbauen.

0
Ollig00 
Fragesteller
 07.08.2018, 10:35
@ZaoDaDong

Hmm.. Ich bin noch in der Anfangsphase was das Programmieren angeht.. Hast du da irgend ein Beispiel wie einen Code o.ä.?

0