Wie berechnen Sie die Komplexität des Passwortes?
Einige Anwendungen (oder Websites) berechnen eine Kennwortkomplexität, wenn Sie sie eingeben. Sie zeigen normalerweise einen roten Balken an, der orange wird, dann grün, dann noch grüner, wenn Ihr Passwort länger wird, und enthält mehr Klassen von Zeichen (dh Kleinbuchstaben, Großbuchstaben, Interpunktion, Ziffern ...)
Hier ist der Algorithmus I benutzen.
private int GetPasswordComplexity(string password)
{
if (password.Length <= 4)
return 1;
int complexity = 0;
int digit = 0;
int letter = 0;
int cap = 0;
int other = 0;
for (int i = 0; i < password.Length; i++)
{
if (char.IsDigit(password[i]) && i!=password.Length-1)
digit = 1;
else if (char.IsLower(password[i]))
letter = 1;
else if (char.IsUpper(password[i]) && i!=0)
cap = 1;
else
other = 1;
}
complexity = digit + letter + cap + other;
if (password.Length <= 7)
complexity = Math.Min(3, complexity);
return complexity;
}
Ich bin besorgt, dass mein Algorithmus "Password1!" als "sehr stark" und "] @ fee: m" als "schwach", weil es nur 7 Char lang ist.
BEARBEITEN: Ich habe den Algorithmus geringfügig aktualisiert, um Großbuchstaben und Ziffern zu ignorieren, wenn sie jeweils das erste und das letzte Zeichen des Passworts sind.
Hat jemand hier Erfahrung mit dieser Art von Problemen? Wie würden Sie ein Wörterbuch hinzufügen, um gängige Wörter zu erkennen?
Absolut tolle Beschreibung. Vielen, vielen Dank! –
Gute Ideen. Aber: Komplexität ("PasswordPassword") = 52^17 = 1.5^10^29 Komplexität ("!:^DE1") = 94^6 = 6x10^11 Nun, welches Passwort ist stärker? – Brann
Es ist nur eine grobe Maßnahme. Wahrscheinlich möchten Sie auch die gängigsten Passwörter überprüfen. http://www.modernlifeisrubbish.co.uk/article/top-10-most-common-passwords http://lawprofessors.typepad.com/law_librarian_blog/2007/05/10_most_common_.html – tvanfosson