mirror of
https://github.com/Casvt/MIND.git
synced 2026-02-19 11:54:46 -05:00
37 lines
857 B
Python
37 lines
857 B
Python
#-*- coding: utf-8 -*-
|
|
|
|
from base64 import urlsafe_b64encode
|
|
from hashlib import pbkdf2_hmac
|
|
from secrets import token_bytes
|
|
from typing import Tuple
|
|
|
|
def get_hash(salt: bytes, data: str) -> bytes:
|
|
"""Hash a string using the supplied salt
|
|
|
|
Args:
|
|
salt (bytes): The salt to use wwhen hashing
|
|
data (str): The data to hash
|
|
|
|
Returns:
|
|
bytes: The b64 encoded hash of the supplied string
|
|
"""
|
|
return urlsafe_b64encode(
|
|
pbkdf2_hmac('sha256', data.encode(), salt, 100_000)
|
|
)
|
|
|
|
def generate_salt_hash(password: str) -> Tuple[bytes, bytes]:
|
|
"""Generate a salt and get the hash of the password
|
|
|
|
Args:
|
|
password (str): The password to generate for
|
|
|
|
Returns:
|
|
Tuple[bytes, bytes]: The salt (1) and hashed_password (2)
|
|
"""
|
|
# Hash the password
|
|
salt = token_bytes()
|
|
hashed_password = get_hash(salt, password)
|
|
del password
|
|
|
|
return salt, hashed_password
|