Jump to content

Recommended Posts

Posted (edited)

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
Posted

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!

Posted (edited)

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
Posted

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!

Posted (edited)

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
Posted

Uma sugestão completares o dicionário, com caracteres especiais.. nem que sejam alguns já dá outra segurança á password, a não ser que seja um programa puramente académico.

Roger that

  • 5 weeks later...
Posted

    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.

Posted

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 🙂

  • 4 weeks later...
Posted

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

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
×
×
  • 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.