Was ist der einfachste Weg, um ein Passwort zu verschlüsseln, wenn ich es in der Registrierung speichern?
Derzeit Schreibe ich im Klartext oops!es ist eine in-house-Programm, so es ist nicht schlecht, aber ich möchte es richtig machen. Wie soll ich über die Verschlüsselung, diese beim schreiben in die registry und wie kann ich Sie entschlüsseln?
OurKey.SetValue("Password", textBoxPassword.Text);
InformationsquelleAutor der Frage | 2008-10-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie nicht entschlüsseln, Authentifizierung Passwörter!
Hash Sie mit so etwas wie der SHA256-Anbieter und, wenn Sie haben, um die Herausforderung, hash die Eingabe des Benutzers und sehen Sie, wenn die beiden hashes übereinstimmen.
Verlassen Passwörter reversibel ist eine wirklich schrecklich Modell.
Edit2: ich dachte, wir Sprachen gerade über die front-line-Authentifizierung. Sicher, es gibt Fälle, in denen Sie zum verschlüsseln von Kennwörtern für die anderen Dinge, die müssen reversibel sein, aber es sollte eine 1-way Sperre oben drauf alle (mit sehr wenigen Ausnahmen).
Habe ich aktualisiert die hashing-Algorithmus, aber für die best mögliche Stärke, die Sie behalten möchten ein eigenes Salz und hinzufügen, dass Ihre Eingabe die vor hashing. Würden Sie dies wieder tun, wenn Sie vergleichen. Dies fügt eine weitere Schicht machen es noch schwieriger für jemanden, der rückgängig zu machen.
InformationsquelleAutor der Antwort Oli
Beachten Sie bitte auch die "Salzen" Ihren hash (kein Gastronomie-Konzept!). Im Grunde, das bedeutet, dass das Anhängen einige zufällige text, um das Kennwort, bevor Sie hash.
"Der salt-Wert hilft, zu verlangsamen, ein Angreifer führen Sie einen Wörterbuch-Angriff sollte Ihre Anmeldeinformationen gefährdet werden, so dass Sie zusätzliche Zeit zu erkennen und zu reagieren, um den Kompromiss."
Zum speichern von Passwort-hashes:
a) Generieren einer zufälligen salt-Wert:
b) fügen Sie die Salz zum Passwort.
c) der kombinierte Hash-password & Salz:
d) fügen Sie die Salz auf die resultierende hash.
e) Speichern Sie das Ergebnis in Ihrem Benutzer-Datenbank speichern.
Dieser Ansatz bedeutet, dass Sie brauchen nicht zu speichern, das Salz getrennt und dann neu berechnen den hash mit dem salt-Wert und das Klartext-Passwort mit dem Wert vom Benutzer abgerufen.
Bearbeiten: Als rohe Rechenleistung wird billiger und schneller, der Wert der Vermischung-oder, Salzen hashes -- zurückgegangen. Jeff Atwood hat eine ausgezeichnete 2012 update zu langatmig, zu wiederholen, in seiner Gesamtheit hier, die besagt:
InformationsquelleAutor der Antwort DOK
Dies ist, was Sie tun möchte:
Können Sie, dass mit diesem die folgenden Klassen.
Diese Klasse ist eine generische Klasse ist der client-Endpunkt. Es ermöglicht IOC von verschiedenen Verschlüsselungsalgorithmen mit Ninject.
Diese nächste Klasse ist die ninject-Klasse, die erlaubt, Sie zu injizieren, die verschiedenen algorithmen:
Dies ist die Schnittstelle, die jeder Algorithmus implementiert werden muss, der zum verschlüsseln/entschlüsseln von strings:
Dies ist eine Implementierung unter Verwendung des TripleDES-Algorithmus:
Können Sie sehen, meine video-und download-code für diese : http://www.wrightin.gs/2008/11/how-to-encryptdecrypt-sensitive-column-contents-in-nhibernateactive-record-video.html
InformationsquelleAutor der Antwort Jamie Wright
Wäre eine option werden, die zum speichern der hash (SHA1, MD5) Passwort anstelle des klar-text-Kennwort, und Wann immer Sie wollen, um zu sehen, wenn das Passwort gut ist, nur vergleichen Sie es mit der hash.
Wenn Sie brauchen, sichere Lagerung (zum Beispiel für ein Passwort, dass Sie verwenden, um eine Verbindung zu einem Dienst herstellen), dann ist das problem komplizierter.
Wenn es nur für die Authentifizierung, dann wäre es genug, um die hash.
InformationsquelleAutor der Antwort Bogdan Maxim
Wenn Sie wollen in der Lage sein zu entschlüsseln das Passwort, ich denke, der einfachste Weg wäre die Verwendung von DPAPI (Benutzer-store-Modus) zu verschlüsseln/entschlüsseln. Auf diese Weise müssen Sie nicht haben, um Geige mit Schlüssel, speichern Sie Sie irgendwo oder hard-code, der Sie in Ihrem code - in beiden Fällen wird jemand entdecken, die Sie durch die Suche in der Registrierung, Benutzer-Einstellungen oder mit dem Reflektor.
Anderweitig zu verwenden-hashes SHA1-oder MD5-wie schon andere gesagt haben hier.
InformationsquelleAutor der Antwort liggett78
Wie ligget78 sagte, DPAPI wäre ein guter Weg zu gehen für die Speicherung der Passwörter. Überprüfen Sie heraus die ProtectedData Klasse auf MSDN zum Beispiel Nutzung.
InformationsquelleAutor der Antwort Beau
Tom Scott bekam es gleich in seiner Berichterstattung, wie (nicht) zum speichern von Passwörtern, auf Computerphile.
https://www.youtube.com/watch?v=8ZtInClXe1Q
Wenn Sie überhaupt vermeiden, nicht versuchen, Kennwörter zu speichern selbst. Verwenden Sie einen separaten, vorher festgelegten, vertrauenswürdigen Authentifizierung der Benutzer, Plattform (z.B.: OAuth-Anbieter, die Sie Unternehmen Active Directory-Domäne, etc.) statt.
Wenn Sie müssen die Speicherung der Passwörter, nicht befolgen Sie die Anleitung hier. Zumindest nicht, ohne auch Beratung neueren und seriösen Publikationen für Ihre Sprache der Wahl.
Gibt es sicherlich viele schlaue Leute hier, und wahrscheinlich auch einige gute Anleitung gegeben. Aber die Chancen sind stark, dass durch die Zeit Sie dies Lesen, alle Antworten hier (einschließlich dieser) wird bereits veraltet sein.
Der richtige Weg, um die Speicherung der Passwörter im Laufe der Zeit ändert.
Wahrscheinlich häufiger, als manche Menschen ändern Ihre Unterwäsche.
Alles, was gesagt, hier einige Allgemeine Hinweise, die hoffentlich nützlich bleiben für eine Weile.
Prozess der Passwörter genau so, wie vom Benutzer eingegeben, während der Erstellung. Alles, was Sie tun, um das Kennwort vor dem senden an den Kryptographie-Modul wird wahrscheinlich nur Schwächen. Tun die folgenden auch noch hinzu, die Komplexität der Passwort-Speicher & verification-Prozess, die dazu führen könnten andere Probleme (vielleicht sogar Sicherheitslücken) die Straße hinunter.
Ablehnen Erstellung von Passwörtern, die nicht gelagert werden kann, ohne änderung. Die Stärkung der oben genannten. Wenn es einen guten Grund dafür, Ihr Passwort storage-Mechanismus können nicht entsprechend verarbeitet werden, bestimmte Zeichen, Leerzeichen, Zeichenketten-oder Passwort-Längen, dann einen Fehler zurück, und lassen Sie die Benutzer wissen über das system an die Grenzen, also können Sie wiederholen-mit einem Passwort, das passt in Ihnen. Für eine bessere Benutzer-Erfahrung, machen Sie eine Liste dieser Einschränkungen dem Nutzer zugänglich up-front. Gar nicht kümmern, geschweige denn die Mühe, verstecken Sie die Liste von Angreifer - Sie werden es herausfinden leicht genug, auf Ihre eigenen sowieso.
Allem...
Nicht einfach auf niemanden hören hier.
Gehen, suchen Sie einen seriösen und sehr jüngsten Veröffentlichung auf die richtigen Methoden zur Speicherung von Passwörtern in Ihrer Sprache der Wahl. Tatsächlich, Sie sollten finden mehrere neuere Publikationen, die von mehreren verschiedenen Quellen, die einverstanden sind, bevor du dich auf eine Methode.
Es ist sehr möglich, dass alles, was jeder hier (mich eingeschlossen) gesagt hat, wurde bereits ersetzt durch bessere Technologien oder erbracht werden unsicher durch die neu entwickelten Angriffsmethoden. Gehen Sie finden etwas, das mehr wohl nicht.
InformationsquelleAutor der Antwort Iszi
Wenn es ein Passwort für die Authentifizierung verwendet, die durch Ihre Anwendung, dann hash das Passwort als andere vorschlagen.
Wenn Sie die Speicherung von Passwörtern für eine externe Ressource, oft werden Sie wollen in der Lage sein, den Benutzer auffordern, für diesen Anmeldeinformationen, und geben Sie ihm die Möglichkeit zu sparen Sie sicher. Bietet Windows die Anmeldeinformationen UI (CredUI) für diesen Zweck gibt es eine Reihe von Proben, die zeigen, wie, dies zu nutzen .NETTO, einschließlich dieses auf MSDN.
InformationsquelleAutor der Antwort Joe
Ich habe sah überall für ein gutes Beispiel für die Verschlüsselung und Entschlüsselung-Prozess, aber die meisten waren zu Komplex.
Jedenfalls gibt es viele Gründe, jemand kann wollen, zu entschlüsseln, die einige text-Werte einschließlich der Kennwörter. Der Grund, warum ich brauchen, um zu entschlüsseln, das Passwort auf der Seite, die ich arbeite aktuell ist, weil Sie wollen sicherstellen, dass, wenn jemand gezwungen wird, sein Passwort zu ändern, wenn es abläuft, wir lassen Sie nicht ändern Sie es mit einem engen Variante mit dem gleichen Kennwort, die Sie in den letzten x Monaten.
Also schrieb ich einen Prozess vor, das in vereinfachter Weise. Ich hoffe, dieser code ist nützlich, um jemanden. Für alles, was ich weiß, ich kann am Ende mit diesem zu einer anderen Zeit für eine andere Firma/Website.
InformationsquelleAutor der Antwort Deathstalker
Wenn Sie mehr benötigen, zum Beispiel die Sicherung einer Verbindungszeichenfolge (zur Verbindung zu einer Datenbank), überprüfen Sie diese Artikelwie es bietet die beste "option" für diese.
Oli ' s Antwort ist auch gut, da es zeigt, wie Sie erstellen einen Hashwert für die Zeichenfolge.
InformationsquelleAutor der Antwort Bogdan Maxim
..NET bietet cryptographics Dienstleistungen, die in der Klasse enthalten in der
System.Sicherheit.Der Kryptografie-namespace.
InformationsquelleAutor der Antwort osp70
Anstatt zu verschlüsseln/entschlüsseln, sollten Sie das Paßwort durch eine Hash-Algorithmus md5/sha512, oder ähnliches. Was Sie idealerweise zu tun ist hash des Kennworts und speichern der hash -, dann, wenn das Passwort benötigt wird, können Sie hash der Eingabe und vergleichen Sie die Einträge. Ein Passwort wird dann nicht "entschlüsselt", werden einfach gehasht und dann verglichen.
InformationsquelleAutor der Antwort Jeremy B.