Prüfen ob Passwort sicher ist

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von bastimw.

    Prüfen ob Passwort sicher ist

    Hallo zusammen,

    Ich schreibe gerade an einem Programm, das zur Verwendung eine Authentifizierung mittels Benutzername und Passwort erfordert. Soweit so gut. Ich will bei der "Registrierung" aber gerne darauf bestehen, das die Benutzer halbwegs sichere Passwörter vergeben.

    Daher möchte ich eine Funktion schreiben, die True zurück gibt wenn der Passwortstring folgende Kriterien erfüllt:

    1.) Passwort muss mindestens 8 Zeichen lang sein.
    2.) Passwort muss mit einem Großbuchstaben beginnen.
    3.) Passwort muss mindestens eine Zahl enthalten.

    Die ersten beiden Punkte stellen nicht wirklich ein Problem da aber wie kann ich Prüfen ob ein String Zahlen enthällt?
    Sicherlich könnte ich den String Char für Char durchgehen und gucken ob es eine Zahl ist aber das muss doch sicherlich auch Eleganter funktionieren.

    Jemand eine Idee?
    Was ist denn daran nicht elegant?

    Ich meine, kürze als das kriegste es bestimmt nicht hin:

    VB.NET-Quellcode

    1. Dim DaIstEineZahlEnthalten As Boolean = False
    2. For Each a As Char In "Hallo".ToCharArray
    3. If Char.IsNumber(a) Then
    4. DaIstEineZahlEnthalten = True
    5. End If
    6. Next
    Mfg
    Vincent

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    3. Dim wichtig() As String = {"1", "2", "3", "4", "5", "6", "7", "8", "9"}
    4. Dim bool As Boolean = False
    5. For Each zahl In wichtig
    6. If TextBox1.Text.Contains(zahl) Then
    7. bool = True
    8. End If
    9. Next
    10. If bool = True Then MessageBox.Show("Zahl vorhanden!")
    11. End Sub
    12. End Class


    Vielleicht auch nicht sehr elegant aber es tut was es soll :D
    Bitte keine VB-Fragen üb... Ach scheiß drauf, mich fragt ja eh keiner.

    VincentTB schrieb:

    Das geht wesentlich kürzer

    VB.NET-Quellcode

    1. Function isValidPassword(ByVal Pwd as String) As Boolean
    2. Return Pwd.Length > 7 AndAlso Pwd Like "[A-Z]*#*"
    3. End Function


    Edit:
    Noch eleganter als String Extension

    VB.NET-Quellcode

    1. <System.Runtime.CompilerServices.Extension> _
    2. Public Function isValidPassword(ByVal Pwd as String) As Boolean
    3. Return Pwd.Length > 7 AndAlso Pwd Like "[A-Z]*#*"
    4. End Function
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „petaod“ ()

    Cell schrieb:

    wenn der Passwortstring folgende Kriterien erfüllt
    Bei uns auf Arbeit gilt:
    1. >= 8 Zeichen
    2. es sind Großbuchstaben enthalten
    3. es sind Kleinbuchstaben enthalten
    4. es sind Ziffern enthalten
    5. es sind Sonderzeichen enthalten
    Von den unteren 4 müssen 3 Bedingungen erfüllt sein.

    Cell schrieb:

    muss mit einem Großbuchstaben beginnen.
    ist aber bitte out.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Vielen Dank für die vielen antworten und entschuldigt, dass ich erst heute nachsehen konnte.


    Bei uns auf Arbeit gilt:

    >= 8 Zeichen
    es sind Großbuchstaben enthalten
    es sind Kleinbuchstaben enthalten
    es sind Ziffern enthalten
    es sind Sonderzeichen enthalten

    Von den unteren 4 müssen 3 Bedingungen erfüllt sein.


    Das sieht gut aus. Ich danke das werde ich adaptieren ^^


    Function isValidPassword(ByVal Pwd as String) As Boolean
    Return Pwd.Length > 7 AndAlso Pwd Like "[A-Z]*#*"
    End Function


    Echt klasse genau soetwas habe ich gesucht. Vielen Dank
    @bastimw: diese If-Bedignung ist nicht gut, da sie ein Object als Rückgabe hat. Wieso aber auch IF Benutzen. If erwartet eine Bedingung welche einen boolschen Wert zurück gibt, also kann man sie auch direkt zuweisen.

    VB.NET-Quellcode

    1. Dim passwort_hat_zahlen As Boolean = mypasswordstring.Intersect("0123456789").Count > 0