23 lines
738 B
Python
23 lines
738 B
Python
import binascii
|
|
import hashlib
|
|
import os
|
|
|
|
|
|
def make_hash(password):
|
|
salt = hashlib.sha256(os.urandom(60)).hexdigest().encode('ascii')
|
|
pwdhash = hashlib.pbkdf2_hmac('sha512', password.encode('utf-8'),
|
|
salt, 100000)
|
|
pwdhash = binascii.hexlify(pwdhash)
|
|
return (salt + pwdhash).decode('ascii')
|
|
|
|
|
|
def check_hash(password, stored_pw):
|
|
salt = stored_pw[:64]
|
|
stored_password = stored_pw[64:]
|
|
pwdhash = hashlib.pbkdf2_hmac('sha512',
|
|
password.encode('utf-8'),
|
|
salt.encode('ascii'),
|
|
100000)
|
|
pwdhash = binascii.hexlify(pwdhash).decode('ascii')
|
|
return pwdhash == stored_password
|