Jump to content

[Resolvido] Password aleatória


Yana
 Share

Recommended Posts

Boas, fiz mais um pequeno script em python, nomeadamente um gerador de senhas aleatórias, deixo aqui o código e gostava de opiniões sobre como melhora-lo.

import random
char = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
num_caract = int(input("Número de caracteres: "))
def password():
if (num_caract < 0):
 return "Erro: número negativo"
elif (num_caract == 0):
 return "Erro: Tem que ter pelo menos 1 caracter."
else:
 passwd = ""
 while len(passwd) != num_caract:
	 passwd = passwd + random.choice(char)
 if len(passwd) == num_caract:
	 return "Password: %s" % passwd

print password()

Edited by djthyrax
GeSHi
Link to comment
Share on other sites

Outra ideia: passa por parâmetro o número de caracteres:

def password(num_caract)

Assim, sempre que precisares de chamar este método, fazes:

password(int(input("Número de caracteres? ")))

Quando um método depende de um valor deste género, deverá ser uma variável local (passada por parâmetro) e não uma global. Assim é utilizável em qualquer script. 😉

Knowledge is free!

Link to comment
Share on other sites

Outra ideia: passa por parâmetro o número de caracteres:

def password(num_caract)

Assim, sempre que precisares de chamar este método, fazes:

password(int(input("Número de caracteres? ")))

Quando um método depende de um valor deste género, deverá ser uma variável local (passada por parâmetro) e não uma global. Assim é utilizável em qualquer script. 😉

Ok muito obrigado 👍

Edited by Yana
Link to comment
Share on other sites

Usem raw_input e não input, podem ver na documentação o porquê.

No Python 3 não consigo utilizar o raw_input porque, segundo o erro, não está declarado.

Deve estar numa lib qualquer que eu não sei qual é. O mesmo acontece com o reduce que no Python 3 tem de ser importado da lib functools.

Consegues-me indicar a que lib posso ir buscar o raw_input, ou os métodos de input da versão 3 mudaram?

Knowledge is free!

Link to comment
Share on other sites

No Python 3 não consigo utilizar o raw_input porque, segundo o erro, não está declarado.

Deve estar numa lib qualquer que eu não sei qual é. O mesmo acontece com o reduce que no Python 3 tem de ser importado da lib functools.

Consegues-me indicar a que lib posso ir buscar o raw_input, ou os métodos de input da versão 3 mudaram?

Yah, mudou fica input().

Edited by Yana
Link to comment
Share on other sites

    while len(passwd) != num_caract:
	 passwd = passwd + random.choice(char)        

Podes altear o código dentro do while para


while len(str_pass) != num_caract:
str_pass = str_pass + chr(random.randrange(48, 122))   

desta form estas a poupar espaço na memoria que unica função é manter uma string com as letras que podem ser utilizadas para gerar a password.

Link to comment
Share on other sites

Podes altear o código dentro do while para


while len(str_pass) != num_caract:
str_pass = str_pass + chr(random.randrange(48, 122))  

desta form estas a poupar espaço na memoria que unica função é manter uma string com as letras que podem ser utilizadas para gerar a password.

ok Obrigado 🙂

Link to comment
Share on other sites

Podias dar a escolher o nivel de segurança que o utilizados pretendia.

Por ex:

2 niveis de segurança, um deles com caracteres especiais, fazias o mesmo que fizes-te:

char = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'
char_especial = "!#$%&/()="
option = raw_input('Nivel de seguranca(1 ou 2): ') #ou input('') no py3
if option == 'nivel 2' or option == 'lvl 2' or option == '2':
 char += char_especial

depois começavas o loop for como fizes-te. simples

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.