quart-imp/quart_imp/auth/__private_funcs__.py

34 lines
850 B
Python
Raw Normal View History

2024-02-11 21:59:18 +00:00
import typing as t
from hashlib import sha256, sha512
def _pps(pepper_, pass_, salt_) -> str:
return pepper_ + pass_ + salt_
def _ppe(pepper_, pass_, salt_) -> str:
return pass_ + pepper_ + salt_
def _guess_block(
guesses: set,
input_password: str,
database_password: str,
database_salt: str,
encryption_level: int = 512,
pepper_position: t.Literal["start", "end"] = "end",
) -> bool:
for guess in guesses:
_sha = sha512() if encryption_level == 512 else sha256()
_sha.update(
(
_pps(guess, input_password, database_salt)
if pepper_position == "start"
else _ppe(guess, input_password, database_salt)
).encode("utf-8")
)
if _sha.hexdigest() == database_password:
return True
return False