from hashlib import sha256 # Program som demonstrerer hvordan man kan bruke sha256 til å lagre passord, # istedenfor å lagre passord i klartekst. # Merk at hasing i seg selv ikke er trygt, siden vi kan gjøre frekvensanalyser. # derfor bør man bruke noe som heter salt i tillegg. class User: def __init__(self, username, password): self._username = username self._password = sha256(password.encode('utf-8')).hexdigest() def __str__(self): return f"|{self._username}|{self._password}" def get_password(self): return self._password class System: def __init__(self): self._users = dict() def add_to_system(self, username, password): self._users[username] = User(username,password) def log_in(self, username, password): password_typed = sha256(password.encode('utf-8')).hexdigest() # her magien skjer if username in self._users: if password_typed == self._users[username].get_password(): return True return False def __str__(self): st = "" for user in self._users.values(): st += str(user) + "\n" return st def new_user(sys): print("LEGG INN NY BRUKER") print("Fyll inn brukernavn og passord på dette formatet: brukernavn,passord") inp = input().split(",") sys.add_to_system(inp[0],inp[1]) def login(sys): print("LOGG INN") print("Fyll inn brukernavn og passord på dette formatet: brukernavn,passord") inp = input().split(",") username = inp[0] password = inp[1] if sys.log_in(username,password): print("Sukess!") else: print("Du fikk ikke logget inn..") def main(): sys = System() inp = "" while (inp != "q"): print("Trykk q for å avslutte") print(" n for å legge til ny bruker") print(" l for å logge inn") print(" a for å se brukere (kun admin kan dette)") # i dette systemet kan alle det, men jeg later som inp = input() if inp == "n": new_user(sys) elif inp == "l": login(sys) elif inp == "a": print(sys) print("Takk for meg!") main()