Validação de senha em Python
Vamos pegar uma senha como uma combinação de caracteres alfanuméricos junto com caracteres especiais e verificar se a senha é válida ou não com a ajuda de algumas condições.
As condições para uma senha válida são:
- Deve ter pelo menos um número.
- Deve ter pelo menos um caractere maiúsculo e um minúsculo.
- Deve ter pelo menos um símbolo especial.
- Deve ter entre 6 a 20 caracteres.
Entrada: Geek12 # Saída: A senha é válida. Entrada: asd123 Saída: Senha inválida !!
Podemos verificar se uma determinada string é elegível para ser uma senha ou não de várias maneiras.
Método # 1: Método ingênuo (sem usar 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()
Senha é válida
Este código usa funções booleanas para verificar se todas as condições foram satisfeitas ou não. Vemos que embora a complexidade do código seja básica, o comprimento é considerável.
Método 2: usando regex
compile()
O método do módulo Regex cria um objeto Regex, tornando possível executar funções regex na variável pat . Em seguida, verificamos se o padrão definido por pat é seguido pela string de entrada passwd . Nesse caso, o método de pesquisa retorna verdadeiro , o que permitiria que a senha fosse válida.
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()
A senha é válida.
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva