Visualizzazione dei risultati da 1 a 7 su 7

Discussione: [PYTHON]Hash

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    42

    [PYTHON]Hash

    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()
    ??????????????????????????

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    707
    Diciamo che un hash md5 non è una proprio cifratura, è un hash, ossia una funzione non invertibile.
    A parte questo potresti aggiungere nella funzione CheckPassLogin subito all'inizio, prima di chiamare CriptPass, un:
    print Pass
    print PassSaved
    e poi riporti qui i risultati?
    Ciao.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    42

    Risultati

    [CODE]
    Passaved=d41d8cd98f00b204e9800998ecf8427e
    Pas
    [CODE/]
    ??????????????????????????

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    42
    PassSaved=d41d8cd98f00b204e9800998ecf8427e
    Pas
    ??????????????????????????

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    42
    Non riesco a pubblicarli!!!!
    Riprovo
    d41d8cd98f00b204e9800998ecf8427e= PassSaved

    4eae18cf9e54a0f62b44176d074cbe2f=Pass
    ??????????????????????????

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    707
    Originariamente inviato da arna98
    Riprovo
    d41d8cd98f00b204e9800998ecf8427e=PassSaved
    4eae18cf9e54a0f62b44176d074cbe2f=Pass
    Non ho letto tutto il codice, ma farai un errore nel chiamare CheckPassLogin:

    Se guardiamo:
    def CheckPassLogin(self, Pass, PassSaved):
    - Pass deve essere la password in chiaro
    - PassSaved deve essere l'hash della password

    infatti nel corpo della funzione come prima cosa fai:
    Hashed=self.CriptPass(Pass)

    Invece nella stampa che hai riportato Pass è già l'hash della password, e non la password in chiaro.

    Ciao.

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    42
    rileggendo il codice non mi sembra...
    ??????????????????????????

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.