Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1563 | Anzahl registrierter User: 1895 | Besucher online: 80
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Passwortstärke validieren


Autor: Jan Welker
Sprache: C#
Bewertung:
6.85 (3 votes)
Anzahl der Aufrufe: 5110
  
Kick it on dotnet-kicks.de  

Beschreibung:

Mit dieser Methode kann überprüft werden, ob ein Passwort den gegeben Sicherheitsrichtlinien entspricht.

Benötigtes Using:
using System.Text.RegularExpressions;




Abgelegt unter: Passwort, Password, validieren, Regex.



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/// <summary>
/// Validates the password.
/// </summary>
/// <param name="passwordToValidate">The password to validate.</param>
/// <param name="minimumPasswordLength">Minimum length of the password.</param> 
/// <param name="minimumNumberOfSpecialCharaters">The minimum number of special charaters.</param> 
/// <param name="minimumNumberOfUpperCaseCharaters">The minimum number of upper case charaters.</param> 
/// <param name="minimumNumberOfLowerCaseCharaters">The minimum number of lower case charaters.</param> 
/// <param name="minimumNumberOfNumericCharaters">The minimum number of numeric charaters.</param> 
/// <returns></returns> 
public bool ValidatePassword(string passwordToValidate, int minimumPasswordLength, int minimumNumberOfSpecialCharaters, int minimumNumberOfUpperCaseCharaters, int minimumNumberOfLowerCaseCharaters, int minimumNumberOfNumericCharaters)
{
    if (passwordToValidate == null || passwordToValidate.Length < minimumPasswordLength)
        return false;

    int numberOfSpecialCharaters = 0;
    int numberOfLowerCaseCharaters = 0;
    int numberOfUpperCaseCharaters = 0;
    int numberOfNumericCharaters = 0;

    var regexSpecialCharater = new Regex("[^A-Za-z0-9]");
    var regexLowerCaseCharater = new Regex("[a-z]");
    var regexUpperCaseCharater = new Regex("[A-Z]");
    var regexNumericCharaters = new Regex("[0-9]");

    for (int i = 0; i < passwordToValidate.Length; i++)
    {
        if (regexSpecialCharater.IsMatch(passwordToValidate[i].ToString()))
            numberOfSpecialCharaters++;

        if (regexLowerCaseCharater.IsMatch(passwordToValidate[i].ToString()))
            numberOfLowerCaseCharaters++;

        if (regexUpperCaseCharater.IsMatch(passwordToValidate[i].ToString()))
            numberOfUpperCaseCharaters++;

        if (regexNumericCharaters.IsMatch(passwordToValidate[i].ToString()))
            numberOfNumericCharaters++;
    }

    return (numberOfSpecialCharaters >= minimumNumberOfSpecialCharaters)
           && (numberOfLowerCaseCharaters >= minimumNumberOfLowerCaseCharaters)
           && (numberOfUpperCaseCharaters >= minimumNumberOfUpperCaseCharaters)
           && (numberOfNumericCharaters >= minimumNumberOfNumericCharaters);
}
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)

Sperneder Patrick schrieb am:  07.10.2009 14:39:07

Hallo Jan,
Ist es denkbar aus dieser Methode eventuell einen Wert zurückzugeben der die Passwortstärke als Wert von 0 - 9 wiedergibt? Ich meine ich weis das dies natürlich möglich ist, jedoch wonach kann man dies evtl. messen ?
Grüsse Patrick
Jan Welker schrieb am:  07.10.2009 19:40:38

Hallo Patrick,
man könnte Sonderzeichen, Klein- und Großbuchstaben verschiedene Wertigkeiten zuordnen.

Bsp:
Kleinbuchstabe: 1 Punkt
Großbuchstabe: 2 Punkte
Sonderzeichen: 3 Punkte

Dann addiert man die Punkte und begrenzt das Ergebnis bei 10. wenn man meint, das es sicher genug ist.
Es gibt sicher besser Verfahren, was besseres fällt mir auf die Schnelle nicht ein.

Jan
joszef vukovic schrieb am:  28.10.2010 14:12:32

Die Stärke eines zufälligen Passworts kann exakt bestimmt werden:
h = L log2 N , mit N : Anzahl der möglichen Symbole, L : Anzahl der im Passwort verwendeten Symbole.


schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.