# IMPORT =========================================================================================
import hashlib

# FONCTIONS =======================================================================================
def afficher_menu():
	print("")
	print("{:*^50}".format(" MENU "))
	print("* {:<46} *".format("1 - Afficher le hash d'une chaîne"))
	print("* {:<46} *".format("2 - Afficher les comptes utilisateurs"))
	print("* {:<46} *".format("3 - Créer un compte"))
	print("* {:<46} *".format("4 - S'identifier"))
	print("* {:<46} *".format("5 - Quitter"))
	_choix =  input("* Votre choix : ")
	print("")
	return _choix

def hacher(pmot):
	return hashlib.md5(pmot.encode()).hexdigest()

def afficher_comptes(pdico):
	print("{:-^50}".format(" Liste des comptes utilisateurs "))
	print("")
	for k, v in pdico.items():
		print("Utilsateur : " + k)
		print("Mot de passe : " + v)
		print("")

def creer_compte(pdico):
	print("{:-^50}".format(" Créer un compte "))
	print("")
	_user, _password = saisir_user_password() # on saisit les informations du compte
	pdico[_user] = _password # et on l'ajoute au dictionnaire
	print("Compte créé avec succès...")

def saisir_user_password():
	_user = input("Entrer un nom utilisateur : ")
	_password = input("Entrer un mot de passe : ")
	return (_user, hacher(_password))

def verifier_user(pdico, puser):
	if puser in pdico:
		return True
	return False

def verifier_password(pdico, puser, ppassword):
	if pdico[puser] == ppassword:
		return True
	else:
		return False

def identifier(pdico):
	print("{:-^50}".format(" Identification "))
	print("")
	_user = input("Nom utilisateur : ")
	if verifier_user(pdico, _user):
		_password = input("Mot de passe : ")
		if verifier_password(pdico, _user, hacher(_password)):
			print("Authentification réussie... Bienvenue " + _user)
		else:
			print("Mot de passe incorrect !!!")
	else:
		print("Vous n'êtes pas un utilisateur enregistré.")

# PROGRAMME PRINCIPAL =============================================================================
dicopass = {\
			"alice"	: "ab4f63f9ac65152575886860dde480a1",\
			"bob" 	: "827ccb0eea8a706c4c34a16891f84e7b",\
			"carol" : "b6edd10559b20cb0a3ddaeb15e5267cc"\
			}

prog_is_running = True # une fois affecté à False, le programme s'arrête
while(prog_is_running):
	choix = afficher_menu()
	if choix == "1":
		mot = input("Saisir un mot :")
		print("Le hash md5 du mot saisi est : " + hacher(mot))
	elif choix == "2":
		afficher_comptes(dicopass)
	elif choix == "3":
		creer_compte(dicopass)
	elif choix == "4":
		identifier(dicopass)
	elif choix == "5":
		prog_is_running = False
	else:
		print("Choix non valide")

print("Vous vous êtes déconnecté. A bientôt.")
