Passwortüberprüfung in Python
Nehmen wir ein Passwort als eine Kombination aus alphanumerischen Zeichen und Sonderzeichen und prüfen Sie anhand weniger Bedingungen, ob das Passwort gültig ist oder nicht.
Bedingungen für ein gültiges Passwort sind:
- Sollte mindestens eine Nummer haben.
- Sollte mindestens einen Groß- und einen Kleinbuchstaben haben.
- Sollte mindestens ein spezielles Symbol haben.
- Sollte zwischen 6 und 20 Zeichen lang sein.
Eingabe: Geek12 # Ausgabe: Passwort ist gültig. Eingabe: asd123 Ausgabe: Ungültiges Passwort !!
Wir können überprüfen, ob eine bestimmte Zeichenfolge als Kennwort berechtigt ist oder nicht.
Methode 1: Naive Methode (ohne Verwendung von Regex).
def
password_check(passwd):
SpecialSym
=
[
'$'
,
'@'
,
'#'
,
'%'
]
val
=
True
if
len
(passwd) <
6
:
(
'length should be at least 6'
)
val
=
False
if
len
(passwd) >
20
:
(
'length should be not be greater than 8'
)
val
=
False
if
not
any
(char.isdigit()
for
char
in
passwd):
(
'Password should have at least one numeral'
)
val
=
False
if
not
any
(char.isupper()
for
char
in
passwd):
(
'Password should have at least one uppercase letter'
)
val
=
False
if
not
any
(char.islower()
for
char
in
passwd):
(
'Password should have at least one lowercase letter'
)
val
=
False
if
not
any
(char
in
SpecialSym
for
char
in
passwd):
(
'Password should have at least one of the symbols $@#'
)
val
=
False
if
val:
return
val
def
main():
passwd
=
'Geek12@'
if
(password_check(passwd)):
(
"Password is valid"
)
else
:
(
"Invalid Password !!"
)
if
__name__
=
=
'__main__'
:
main()
Passwort ist gültig
Dieser Code verwendete boolesche Funktionen, um zu überprüfen, ob alle Bedingungen erfüllt waren oder nicht. Wir sehen, dass die Komplexität des Codes zwar grundlegend ist, die Länge jedoch beträchtlich ist.
Methode 2: Verwenden von regex
compile()
Die Methode des Regex-Moduls erstellt ein Regex-Objekt, mit dem Regex-Funktionen für die pat- Variable ausgeführt werden können. Dann prüfen wir, ob auf das durch pat definierte Muster die Eingabezeichenfolge passwd folgt . In diesem Fall gibt die Suchmethode true zurück , wodurch das Kennwort gültig wird.
import
re
def
main():
passwd
=
'Geek12@'
reg
=
"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!#%*?&]{6,20}$"
pat
=
re.
compile
(reg)
mat
=
re.search(pat, passwd)
if
mat:
(
"Password is valid."
)
else
:
(
"Password invalid !!"
)
if
__name__
=
=
'__main__'
:
main()
Passwort ist gültig.