Skip to main content
Code Review

Return to Question

Commonmark migration
Source Link

login(username, password)
Checks if this username/password combination is valid.
Returns bool

add_user(username, password)
Adds a user to the password file.
Returns bool

login(username, password)
Checks if this username/password combination is valid.
Returns bool

add_user(username, password)
Adds a user to the password file.
Returns bool

login(username, password)
Checks if this username/password combination is valid.
Returns bool

add_user(username, password)
Adds a user to the password file.
Returns bool

Removed an unintended blank line.
Source Link
import hashlib, random, string
USERNAME_CHARACTERS=string.digits+string.ascii_letters
PASSWORD_CHARACTERS=string.digits+string.ascii_letters+string.punctuation
SALT_CHARACTERS="0123456789abcdefghijklmnopqrstuv"
SALT_CHARACTER_BITS=5
SALT_LENGTH=16
PEPPER_LENGTH=1
FILE_PATH="./shad"
FILE_SEPERATOR=":"
def int_to_string(num):
 string=""
 while num!=0:
 c=num%(2**SALT_CHARACTER_BITS)
 string+=SALT_CHARACTERS[c]
 num-=c
 num//=2**SALT_CHARACTER_BITS
 return string
 
def generate_new_salt():
 return int_to_string(random.getrandbits(SALT_CHARACTER_BITS*SALT_LENGTH))
def generate_new_pepper():
 return int_to_string(random.getrandbits(SALT_CHARACTER_BITS*PEPPER_LENGTH))
def generate_all_peppers():
 for i in range(1,SALT_CHARACTER_BITS*PEPPER_LENGTH):
 yield int_to_string(i)
def do_hash(string):
 return hashlib.sha3_256(string.encode()).hexdigest()
def get_user_data(username):
 with open(FILE_PATH) as h:
 data=h.read()
 for line in data.split("\n"):
 l=line.split(FILE_SEPERATOR)
 if l[0]==username:
 return {"user":l[0],
 "pass":l[1],
 "salt":l[2]}
 raise ValueError("Username not found: "+username)
def is_valid_username(username):
 for i in username:
 if not(i in USERNAME_CHARACTERS):
 return False
 return True
def is_valid_password(username):
 for i in username:
 if not(i in PASSWORD_CHARACTERS):
 return False
 return True
def add_user(username, password):
 if not(is_valid_username(username)):
 print("Invalid username")
 return False
 elif not(is_valid_password(password)):
 print("Invalid password")
 return False
 with open(FILE_PATH) as h:
 data=h.read()
 for line in data.split("\n"):
 l=line.split(FILE_SEPERATOR)
 if l[0]==username:
 print("Username already exists")
 return False
 
 salt=generate_new_salt()
 data=FILE_SEPERATOR.join([username, do_hash(generate_new_pepper()+salt+password), salt])+"\n"
 with open(FILE_PATH, "a") as h:
 h.write(data)
 return True
def login(username, password):
 if not(is_valid_username(username)):
 print("Invalid username")
 return False
 elif not(is_valid_password(password)):
 print("Invalid password")
 return False
 data=get_user_data(username)
 for pepper in generate_all_peppers():
 if do_hash(pepper+data["salt"]+password)==data["pass"]:
 return True
 return False
import hashlib, random, string
USERNAME_CHARACTERS=string.digits+string.ascii_letters
PASSWORD_CHARACTERS=string.digits+string.ascii_letters+string.punctuation
SALT_CHARACTERS="0123456789abcdefghijklmnopqrstuv"
SALT_CHARACTER_BITS=5
SALT_LENGTH=16
PEPPER_LENGTH=1
FILE_PATH="./shad"
FILE_SEPERATOR=":"
def int_to_string(num):
 string=""
 while num!=0:
 c=num%(2**SALT_CHARACTER_BITS)
 string+=SALT_CHARACTERS[c]
 num-=c
 num//=2**SALT_CHARACTER_BITS
 return string
 
def generate_new_salt():
 return int_to_string(random.getrandbits(SALT_CHARACTER_BITS*SALT_LENGTH))
def generate_new_pepper():
 return int_to_string(random.getrandbits(SALT_CHARACTER_BITS*PEPPER_LENGTH))
def generate_all_peppers():
 for i in range(1,SALT_CHARACTER_BITS*PEPPER_LENGTH):
 yield int_to_string(i)
def do_hash(string):
 return hashlib.sha3_256(string.encode()).hexdigest()
def get_user_data(username):
 with open(FILE_PATH) as h:
 data=h.read()
 for line in data.split("\n"):
 l=line.split(FILE_SEPERATOR)
 if l[0]==username:
 return {"user":l[0],
 "pass":l[1],
 "salt":l[2]}
 raise ValueError("Username not found: "+username)
def is_valid_username(username):
 for i in username:
 if not(i in USERNAME_CHARACTERS):
 return False
 return True
def is_valid_password(username):
 for i in username:
 if not(i in PASSWORD_CHARACTERS):
 return False
 return True
def add_user(username, password):
 if not(is_valid_username(username)):
 print("Invalid username")
 return False
 elif not(is_valid_password(password)):
 print("Invalid password")
 return False
 with open(FILE_PATH) as h:
 data=h.read()
 for line in data.split("\n"):
 l=line.split(FILE_SEPERATOR)
 if l[0]==username:
 print("Username already exists")
 return False
 
 salt=generate_new_salt()
 data=FILE_SEPERATOR.join([username, do_hash(generate_new_pepper()+salt+password), salt])+"\n"
 with open(FILE_PATH, "a") as h:
 h.write(data)
 return True
def login(username, password):
 if not(is_valid_username(username)):
 print("Invalid username")
 return False
 elif not(is_valid_password(password)):
 print("Invalid password")
 return False
 data=get_user_data(username)
 for pepper in generate_all_peppers():
 if do_hash(pepper+data["salt"]+password)==data["pass"]:
 return True
 return False
import hashlib, random, string
USERNAME_CHARACTERS=string.digits+string.ascii_letters
PASSWORD_CHARACTERS=string.digits+string.ascii_letters+string.punctuation
SALT_CHARACTERS="0123456789abcdefghijklmnopqrstuv"
SALT_CHARACTER_BITS=5
SALT_LENGTH=16
PEPPER_LENGTH=1
FILE_PATH="./shad"
FILE_SEPERATOR=":"
def int_to_string(num):
 string=""
 while num!=0:
 c=num%(2**SALT_CHARACTER_BITS)
 string+=SALT_CHARACTERS[c]
 num-=c
 num//=2**SALT_CHARACTER_BITS
 return string
 
def generate_new_salt():
 return int_to_string(random.getrandbits(SALT_CHARACTER_BITS*SALT_LENGTH))
def generate_new_pepper():
 return int_to_string(random.getrandbits(SALT_CHARACTER_BITS*PEPPER_LENGTH))
def generate_all_peppers():
 for i in range(1,SALT_CHARACTER_BITS*PEPPER_LENGTH):
 yield int_to_string(i)
def do_hash(string):
 return hashlib.sha3_256(string.encode()).hexdigest()
def get_user_data(username):
 with open(FILE_PATH) as h:
 data=h.read()
 for line in data.split("\n"):
 l=line.split(FILE_SEPERATOR)
 if l[0]==username:
 return {"user":l[0],
 "pass":l[1],
 "salt":l[2]}
 raise ValueError("Username not found: "+username)
def is_valid_username(username):
 for i in username:
 if not(i in USERNAME_CHARACTERS):
 return False
 return True
def is_valid_password(username):
 for i in username:
 if not(i in PASSWORD_CHARACTERS):
 return False
 return True
def add_user(username, password):
 if not(is_valid_username(username)):
 print("Invalid username")
 return False
 elif not(is_valid_password(password)):
 print("Invalid password")
 return False
 with open(FILE_PATH) as h:
 data=h.read()
 for line in data.split("\n"):
 l=line.split(FILE_SEPERATOR)
 if l[0]==username:
 print("Username already exists")
 return False
 
 salt=generate_new_salt()
 data=FILE_SEPERATOR.join([username, do_hash(generate_new_pepper()+salt+password), salt])+"\n"
 with open(FILE_PATH, "a") as h:
 h.write(data)
 return True
def login(username, password):
 if not(is_valid_username(username)):
 print("Invalid username")
 return False
 elif not(is_valid_password(password)):
 print("Invalid password")
 return False
 data=get_user_data(username)
 for pepper in generate_all_peppers():
 if do_hash(pepper+data["salt"]+password)==data["pass"]:
 return True
 return False
edited tags
Link
200_success
  • 145.5k
  • 22
  • 190
  • 479
Source Link
Loading
lang-py

AltStyle によって変換されたページ (->オリジナル) /