Thewizy
-
Modifié le 18 sept. 2018 à 15:46
yg_be
Messages postés23522Date d'inscriptionlundi 9 juin 2008StatutContributeurDernière intervention 9 avril 2025
-
18 sept. 2018 à 17:05
Bonjour,
Voila je souhaite crée une simple authentification sur python j'apprend par moi même et je suis encore débutant j'ai rencontré une erreur que je n'arrive pas a comprend ou trouver de solutuions sur internet
Tout aide serait utile!! si vous avez des moyens de faciliter mon code je prend aussi! :)
voila mon code:
from passlib.hash import sha256_crypt
tries =0
pseudonyme =open("pseudo.txt")
password_file =open("password.txt")
password_file_lines = password_file.readlines()
found = False
defnew_hash_password():global pass2
pass2 = sha256_crypt.hash("123")new_valid_password()defnew_player_password():global tries, pass2
while True:
pass1 =input('Please enter a password: ')
pass2 =input('Now please enter the password again to check: ')if pass1 == pass2:print('You are now logged in welcome!')new_hash_password()else:print('I am sorry but the password does not match')
tries +=1if tries ==3:quit()defnew_valid_password():global password
lines_list = password_file.read()
password_list =[]
password_list.append(pass2)
password_list.append(lines_list)
with open('password.txt','w') as filehandle:
filehandle.writelines("%s\n"% place for place in password_list)new_valid_pseudo()defnew_valid_pseudo():global pseudo2
lines_list =open('pseudo.txt').read()
new_p = pseudo2
pseudo_list=[]
pseudo_list.append(new_p)
pseudo_list.append(lines_list)
with open('pseudo.txt','w') as filehandle:
filehandle.writelines("%s\n"% place for place in pseudo_list)print("Hi", pseudo2,",Welcome on pylilgame!")
password_file.close()
pseudonyme.close()# connection to serverquit()defget_line_number_password():global password, i
password =input("Please enter your password:")
password =(sha256_crypt.verify(password, password_file_lines[i]))
lookup = password
for num, line inenumerate(password_file):if lookup in line:print(num)defget_line_number_pseudo():global pseudo, i
with open('pseudo.txt','r') as f:
lines = f.read().split("\n")for i, line inenumerate(lines):if pseudo in line.split():# or word in line.split() to search for full wordsprint("Word \"{}\" found in line {}".format(pseudo, i +1))get_line_number_password()defsign_in_password():global password,password_check, num
password =input("Please enter your password:")
password_check =(sha256_crypt.verify(password))if password_check is True:print("CC")defsign_in_profile():print("dlapdakfoalfq")if __name__ =="__main__":
hello =input("Would you like to sign in or sign up(SI or SU)")if hello =="SI":
pseudo =input("PSEUDO:")if pseudo in pseudonyme.read():print("The pseudo exists")get_line_number_pseudo()else:print("This pseudonyme doesn't exist!")if hello =="SU":while True:
pseudo =input("PSEUDO:")if pseudo in pseudonyme.read():print("This pseudonyme is already taken!")else:
pseudo2 =input("TYPE YOUR PSEUDO AGAIN:")if pseudo2 == pseudo:new_player_password()else:print("QUIT")<code python>
et voila l'erreur alors que le pseudo et le mdp sont bien stocké en sha256 dans mon fichier text:
Traceback (most recent call last):
File "C:/Users/manuel.gauthier/PycharmProjects/Apprentissage/Labo2.py", line 103, in <module>
get_line_number_pseudo()
File "C:/Users/manuel.gauthier/PycharmProjects/Apprentissage/Labo2.py", line 81, in get_line_number_pseudo
get_line_number_password()
File "C:/Users/manuel.gauthier/PycharmProjects/Apprentissage/Labo2.py", line 64, in get_line_number_password
password = (sha256_crypt.verify(password, password_file_lines[i]))
File "C:\Users\manuel.gauthier\AppData\Roaming\Python\Python37\site-packages\passlib\utils\handlers.py", line 757, in verify
self = cls.from_string(hash, **context)
File "C:\Users\manuel.gauthier\AppData\Roaming\Python\Python37\site-packages\passlib\handlers\sha2_crypt.py", line 337, in from_string
implicit_rounds=implicit_rounds,
File "C:\Users\manuel.gauthier\AppData\Roaming\Python\Python37\site-packages\passlib\handlers\sha2_crypt.py", line 281, in __init__
super(_SHA2_Common, self).__init__(**kwds)
File "C:\Users\manuel.gauthier\AppData\Roaming\Python\Python37\site-packages\passlib\utils\handlers.py", line 1761, in __init__
super(HasRounds, self).__init__(**kwds)
File "C:\Users\manuel.gauthier\AppData\Roaming\Python\Python37\site-packages\passlib\utils\handlers.py", line 1376, in __init__
super(HasSalt, self).__init__(**kwds)
File "C:\Users\manuel.gauthier\AppData\Roaming\Python\Python37\site-packages\passlib\utils\handlers.py", line 593, in __init__
self.checksum = self._norm_checksum(checksum)
File "C:\Users\manuel.gauthier\AppData\Roaming\Python\Python37\site-packages\passlib\utils\handlers.py", line 623, in _norm_checksum
raise exc.ChecksumSizeError(self, raw=raw)
ValueError: malformed sha256_crypt hash (checksum must be exactly 43 chars)
yg_be
Messages postés23522Date d'inscriptionlundi 9 juin 2008StatutContributeurDernière intervention 9 avril 2025Ambassadeur1 578 18 sept. 2018 à 17:05
bonjour, je suggère que tu modifies ton programme en y supprimant toutes les variables globales.
je te suggère aussi de commencer par des exemples plus simples, pour acquérir de bons réflexes.