Salve a tutti.
Sto scrivendo un prgramma grafico tkinker che richiede il login per l'accesso.
Per rendere più sicuro le password uso l'algoritmon md5 per criptarle.
La fase di registrazione è Ok perchè funziona e salva la password criptata su un file.
Quando però testo login mi da errore password errata anche se è corretta. Le password sono salvate su delel liste e poi attraverso pickle salvate su file.
Ecco il codice dell'intero programma( sarà un po' confusionato perchè è la prima volta che programmo ad oggetti):
codice:
###WorkTime|set.py|0.1
from Tkinter import *
from tkMessageBox import *
import pickle
from GeneralSet import ImpostazioniGenerali_Azzeramento
from tkSimpleDialog import *
import hashlib

##Creazione Classe Registrazione
class Register:
    
    #Attributi
    Pass=""
    HashPass=""
    Azienda=""
    FileOriginalName=""
    File=""
    List=()
    CodeFile=""

    #Attribuzione Attributi
    def Attribuzione(self,Pass,Azienda,File):
        self.Pass=Pass
        self.HashPass=self.CriptPass(Pass)
        self.Azienda=Azienda
        self.File=File
    #Apri File Impostazioni
    def SetOpen(self,OpenFileSelect,Modo):
        OpenFile=file(OpenFileSelect,Modo)
        self.File=OpenFile

    #Load List
    def LoadList(self,File):
        List=pickle.load(File)
        return List
            
    #Cripta Password
    def CriptPass(self,Pass):
        Cripting=hashlib.md5()
        Cripting.update(Pass)
        FinalCript=Cripting.hexdigest()
        return FinalCript
    
    #Controlla Password Registrazione
    def CheckPassRegister(self,AdminPass, AdminRePass, Azienda):
        if AdminPass != AdminRePass:
            showerror("Errore!","Le password non coincidono!")
        else:
            self.Attribuzione(AdminPass,Azienda,self.File)
            self.WriteList(self.FileOriginalName,self.Azienda,self.HashPass)
            self.UserCode()
    

        
        
##Creazione Classe Admin
class Admin(Register):
    #Attributi
    Code=""

    #Attribuisci Codice Utente
    def AttribuzioneCode(self,File):
        OpenFile=file(File,"r")
        List=pickle.load(OpenFile)
        self.Code=List[0]
        OpenFile.close()
        
    #Scrivi Lista Registrazione
    def WriteList(self,File,Azienda,HashPass):
        OpenFile=file(File,"w")
        RegistredGeneralSetList=(Azienda,True,False,False,False,HashPass)
        pickle.dump(RegistredGeneralSetList,OpenFile)
        OpenFile.close()
        Code=self.Code
        showinfo("Admin registrato!","Il tuo accaunt admin è stato registrato! Il tuo codice admin è: " + Code)

    #Codice Utente
    def UserCode(self,File,Code):
        List=(Code,)
        OpenFile=file(File,"w")
        pickle.dump(List,OpenFile)
        OpenFile.close()
        
    #Controlla Password Login
    def CheckPassLogin(self,Pass,PassSaved):
        Hashed=self.CriptPass(Pass)
        if Hashed != PassSaved:
            showerror("Errore!","La password non coincide!")
            print Hashed
            print PassSaved
        elif Hashed== PassSaved:
            print "Logged"
        


#//OBJ ADMIN
admin=Admin()
admin.FileOriginalName=r"GeneralSet.wktset"##############################################################################################################################

#Apertura File
admin.SetOpen(admin.FileOriginalName,'r')
admin.List=admin.LoadList(admin.File)

#Creazione Finestra Programma
SetRoot=Tk()
SetRoot.title("Impostazioni - WorkTime")
SetRoot.resizable(True,True)
SetRoot['background']="White"
TitleLael=Label(SetRoot,text="Pannello di Impostazioni di WorkTime",bg="White",fg="Red").grid(row=0,column=0)

#Creazione accaunt Admin
if admin.List[1] == False:
    
    #Apertura File Necessari
    admin.File.close()

    GeneralSetFileW=file(r"GeneralSet.wktset","w")###########################################################################################################
    NoLabel=Label(SetRoot,text="Non hai ancora un account admin. Devi crearne uno",bg="White",fg="Blue").grid(row=1,column=0)
    
    #Variabili Registrazione
    AdminPass=StringVar()
    AdminRePass=StringVar()
    Azienda=StringVar()

    #Interfaccia Utente
    UserLabel=Label(SetRoot,text='Il tuo UserID sarà "admin"',bg="White",fg="Black").grid(row=2,column=0)
    PassLabel=Label(SetRoot,text='Password',bg="White",fg="Black").grid(row=3,column=0)
    EntryPass=Entry(SetRoot,textvariable=AdminPass,width=20,show="*").grid(row=3,column=1)
    RePassLabel=Label(SetRoot,text='Conferma Password',bg="White",fg="Black").grid(row=4,column=0)
    EntryPass=Entry(SetRoot,textvariable=AdminRePass,width=20,show="*").grid(row=4,column=1)
    PassLabel=Label(SetRoot,text='Nome Azienda',bg="White",fg="Black").grid(row=5,column=0)
    EntryPass=Entry(SetRoot,textvariable=Azienda,width=20,).grid(row=5,column=1)

    Conferma=Button(SetRoot,text="Conferma",command= lambda: admin.CheckPassRegister(AdminPass.get(),AdminPass.get(),Azienda.get())).grid(column=2,row=6)

#Finestra Password
elif admin.List[1] == True:

    AskPassRoot=Tk()
    AskPassRoot.title("Admin Password")
    AskPassRoot.resizable(True,True)
    AskPassRoot['background']="White"

    AdminPass=StringVar()
    
    InfoLabel=Label(AskPassRoot,text='Inserisci la Password admin',bg="White",fg="Blue").grid(row=0,column=0)
    EntryPass=Entry(AskPassRoot,textvariable=AdminPass,width=20,show="*").grid(row=1,column=0)
    Conferma=Button(AskPassRoot,text="Conferma",command=lambda:admin.CheckPassLogin(AdminPass.get(),admin.List[5])).grid(column=2,row=6)

    AskPassRoot.mainloop()
        
SetRoot.mainloop()