diff --git a/hash_tools.py b/hash_tools.py new file mode 100644 index 0000000..42c55ee --- /dev/null +++ b/hash_tools.py @@ -0,0 +1,24 @@ +from hashlib import sha256 +from random import choice +POSTS_PER_PAGE = 3 + + +def make_salt(): + '''returns a salt ''' + alpha_digits = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" + return ''.join([choice(alpha_digits) for x in range(16)]) + +def make_hash(value, salt = None): + ''' returns value hashed and salted, and salt''' + if not salt: + salt = make_salt() + hashed = sha256(str.encode(value + salt)).hexdigest() + return '{0},{1}'.format(hashed, salt) + +def check_hash(user_input, hash_db): + '''returns True if both values are equal''' + salt = hash_db.split(',')[1] + if make_hash(user_input, salt) == hash_db: + return True + else: + return False diff --git a/main.py b/main.py index 6fcd364..c3480ee 100644 --- a/main.py +++ b/main.py @@ -5,6 +5,7 @@ # from sqlalchemy.sql import func from app import app, db from models import Student, Teacher, Attendance +from hash_tools import make_hash, check_hash # Main View @app.route('/') diff --git a/models.py b/models.py index d6f242b..b7b15fb 100644 --- a/models.py +++ b/models.py @@ -1,6 +1,7 @@ from app import db from flask_sqlalchemy import SQLAlchemy from datetime import datetime, date +from hash_tools import make_hash, check_hash class Student(db.Model): id = db.Column(db.Integer, primary_key=True) @@ -31,7 +32,7 @@ def __init__(self, first_name, last_name, email, password): self.first_name = first_name self.last_name = last_name self.email = email - self.password = password + self.password = make_hash(password) class Attendance(db.Model):