Forum
>>
Programmazione Python
>>
Files e Directory
>>
Errore di lettura del file username.txt (hash sha3 512)
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
Scritto da CrazyProgrammer |
2018-10-15 18:15:40 - Errore di lettura del file username.txt (hash sha3 512)
|
Salve a tutti,
Questo è il mio primo messaggio sul forum al quale mi sono iscritto proprio perché non sto trovando una soluzione al mio problema. Mi spiego in breve, ho scritto una shell in Py 3.6.2 come passatempo ma sto riscontrando un problema che ne pregiudica parzialmente l'uso. Il problema è il seguente : L'utente quando si registra deve scegliere un username e una password e fin qua tutto va bene, successivamente le credenziali vengono manipolate nella maniera seguente : L'username è il nome del file .txt La password viene hashata (hash sha3 512) e scritta sul file appena creato Per salvare le modifiche è necessario riavviare il programma (Py non crea il file finché l programma non termina a quanto pare) Il file è creato correttamente e il digest è contenuto all'interno del file Tutto apposto sembra Al momento di effettuare il login sorge un problema : non so se è colpa del fatto che si tratti di un hash (dovrebbe leggerlo come stringa no?) o qualcos'altro, fatto sta che ogni volta il programma dà errore come se le credenziali fossero errate anche se ho più volte verificato che gli hash e le credenziali corrispondono Aiuto!! P.S. Il codice è allegato ma lo trovate anche a questo link http://repl.it/@Crazyprogrammer/consoletest3 Grazie |
|
Scritto da RicPol |
2018-10-15 19:39:49 - Re: Errore di lettura del file username.txt (hash sha3 512)
|
Boh? Quel codice è una collezione di script scorrelati tra loro, e tra l'altro scritti malissimo in modo che non sarebbe neanche possibile importarli... tutta quella roba deve essere buttata e riscritta daccapo con un minimo di senso comune (niente codice a livello del modulo, per dire...). Non ho neanche idea di dove dovrei guardare per vedere un problema. Dovunque guardi vedo solo problemi, di tutti i tipi.
Facciamo così: prima di tutto scorpora il codice che ti dà problemi, riducilo a un esempio concreto che faccia questo: 1) crea il file partendo da nome e psw 2) apre il file e verifica la psw. Tutto questo non dovrebbe richiedere più di venti/trenta righe. Così almeno cominciamo a vedere di che cosa stiamo parlando. Poi, non limitarti a descrivere in parole vaghe "che hai un errore". Quale errore? Dove? Posta lo stacktrace dell'errore, e vediamo. In ogni caso: > Per salvare le modifiche è necessario riavviare il programma > (Py non crea il file finché l programma non termina a quanto pare) Ma no, quando mai. https://pythoninwindows.blogspot.com/p/i-miei-libri.html : i miei libri
https://pythoninwindows.blogspot.com : il mio blog |
|
Scritto da CrazyProgrammer |
2018-10-16 19:03:40 - Re: Errore di lettura del file username.txt (hash sha3 512)
|
Grazie mille della risposta.
In primo luogo mi dispiace che trovi il mio codice confusionale e in effetti ho scritto quel post di fretta e ho caricato l'intero codice senza pensare che in effetti l'errore era solo in parte di esso. In merito a quanto hai detto forse mi sono spiegato male, la shell di python non dà errore semplicemente il programma non fà quello che dovrebbe ovvero non confronta correttamente l'input inviato dall'utente con l'hash contenuto nel file Di seguito come mi hai chiesto le righe di codice incriminate import hashlib import os import random usr="" while len(usr) <= 0: usr=input("Username:\n") if len(usr) == 0: print("L'username non può essere vuoto\n") psw="" try: doc2=open(str(usr)+str(".txt"),"x") except FileExistsError: print("Esiste già un utente registrato con quell'username,per favore scegline un altro") while len(psw) <= 0: psw=input("Password:\n") doc2=open(str(usr)+str(".txt"),"r+") tohash2=hashlib.sha3_512(psw.encode()) passhash=tohash2.hexdigest() doc2.write(passhash) doc2.close() print("Processo Terminato.Digita exit nella shell e successivamente avvia nuovamente il programma per applicare le modifiche.\n") if len(psw) == 0: print("La password non può essere vuota\n") Questo provvede a "registrare" le credenziali P.S. non vedo dove sia la confusione,nel codice mi sembra tutto molto chiaro Per quanto riguarda il login usr="" var=True while len(usr) <= 0: usr=input("Username: ") if len(usr) == 0: print("L'username non può essere vuoto") psw="" while len(psw) <= 0: psw=input("Password: ") if len(psw) == 0: print("La password non può essere vuota") try: doc=open(str(usr)+str(".txt"),"r") lines=doc.readlines() hashedpsw=str(lines0) except FileNotFoundError: print("L'username non corrisponde a nessun utente registrato") if hashedpsw == psw: print("Login effettuato con successo") import logged else: print("Credenziali Errate") Spero in un'altra risposta veloce quanto la prima,grazie in anticipo P.P.S Grazie per le critiche,proverò a migliorare il modo in cui scrivo, ma avresti dei consigli specifici? |
|
Scritto da CrazyProgrammer |
2018-10-16 19:04:13 - Re: Errore di lettura del file username.txt (hash sha3 512)
|
Non ho ben capito come mantenere l'indentazione del codice per cui mi scuso in anticipo
|
|
Scritto da CrazyProgrammer |
2018-10-16 19:10:06 - Re: Errore di lettura del file username.txt (hash sha3 512)
|
In merito a quanto dici per la creazione del file anche io sapevo che il file viene creato subito (ho py sul computer ma per comodità uso repl.it come compiler online)
Ho provato più volte ma il file viene creato nella directory del programma solo quando digito exit Provato su IDLE Python 3.6.2 su MacOS X 10.11.6 El Capitan |
|
Scritto da CrazyProgrammer |
2018-10-16 19:33:01 - Re: Errore di lettura del file username.txt (hash sha3 512)
|
P.S. Potrei aver risolto avevo fatto un errore cretino
|
|
Scritto da RicPol |
2018-10-16 20:05:12 - Re: Errore di lettura del file username.txt (hash sha3 512)
|
Te l'ho detto, finché non posti un pezzo di codice che apre un file, ci scrive dentro qualcosa, lo chiude, tutto quello che posso dirti è che sbagli qualcosa.
Però se preferisci non postare codice, possiamo andare avanti a chiacchierare all'infinito... come preferisci. https://pythoninwindows.blogspot.com/p/i-miei-libri.html : i miei libri
https://pythoninwindows.blogspot.com : il mio blog |
Pagina: 1
Esegui il login per scrivere una risposta.