Wilson Waha

May 6, 20221 min

Password generator from first names

Since the creation of the Internet, people have accessed sites, created accounts requiring passwords. some people have difficulty creating strong passwords. A need for security is therefore felt. For this we have set up a program capable of generating a password from an individual's first name.

import string
 
import random
 

 
def pass_gen(firstname):
 

 
""" Generate random password from a first name
 

 
Args:
 
firstname (str) : The first name to generate password
 

 

 
Returns:
 
str: generated password
 

 
"""
 

 
symbols = list(string.ascii_letters + string.digits+"<!?/$*%-(_)#@&+=")
 

 
l = len(firstname) # length of the first name
 

 
# if the length is smaller than 8 we round it to 8 caracters
 
diff = 8-l
 
symbol_complete =""
 
for i in range(diff):
 
symbol_complete = symbol_complete + random.choice(symbols)
 

 
a = lambda x : x+symbol_complete if(l<8) else x
 
firstname = a(firstname)
 

 

 
#let mix up the caracters of first name
 
firstname = list(firstname) # convert the firstname in to list to shuffle it
 
final_len = len(firstname)
 
firstname_mix = random.sample(firstname, len(firstname))
 
firstname_generate = ""
 
for i in range(final_len):
 
m = (i+1)%8
 
firstname_generate = firstname_generate + symbols[m] + firstname_mix[i] + random.choice(symbols)
 
firstname_generate = ''.join(random.sample(firstname_generate, len(firstname_generate)))
 

 
return firstname_generate
 

 

Example of use

in: pass_gen("DataInsight")

out fDcgTvhvw/ted<hdngaiscaaIqibba!tX

Another example:

in: pass_gen("Adama")

out: Ba4c<ftYaAgte/hc-6addmbc

This fonction can generate a strong password from firsts Names

Important python concept

Lambda function: a lambda function is an anonymous function that can be helpful to perform a small task in only one line of code

example of use in our password generator program

a = lambda x : x+ symbol_complete if(l<8) else x

Here lambda function help to complet the lenght of a first name to 8 characters for those whose the lenght is smaller than 8.

    1