1
0
Files
coconut-leaf/backend/utils.py

65 lines
1.3 KiB
Python
Raw Normal View History

2021-01-16 22:15:10 +08:00
import hashlib
import random
import uuid
2021-01-19 22:20:11 +08:00
import time
import math
import re
2021-01-16 22:15:10 +08:00
USERNAME_PATTERN: re.Pattern = re.compile("^[0-9A-Za-z]+$")
PASSWORD_PATTERN: re.Pattern = re.compile("^[!-~]+$")
2021-01-16 22:15:10 +08:00
def IsValidUsername(strl: str) -> bool:
return USERNAME_PATTERN.match(strl) is not None
2021-01-16 22:15:10 +08:00
def IsValidPassword(strl: str) -> bool:
return PASSWORD_PATTERN.match(strl) is not None
def ComputePasswordHash(password: str) -> str:
2021-01-16 22:15:10 +08:00
s = hashlib.sha256()
s.update(password.encode("utf-8"))
2021-01-16 22:15:10 +08:00
return s.hexdigest()
def GenerateUUID() -> str:
2021-01-16 22:15:10 +08:00
return str(uuid.uuid1())
def GenerateToken(username: str) -> str:
2021-01-16 22:15:10 +08:00
s = hashlib.sha256()
s.update(username.encode("utf-8"))
s.update(GenerateUUID().encode("utf-8"))
2021-01-16 22:15:10 +08:00
return s.hexdigest()
def GenerateSalt() -> int:
2021-01-16 22:15:10 +08:00
return random.randint(0, 6172748)
def ComputePasswordHashWithSalt(passwordHashed: str, salt: int) -> str:
2021-01-16 22:15:10 +08:00
s = hashlib.sha256()
s.update((passwordHashed + str(salt)).encode("utf-8"))
2021-01-19 22:20:11 +08:00
return s.hexdigest()
def GetCurrentTimestamp() -> int:
2021-01-24 14:38:08 +08:00
return int(time.time())
2021-02-03 16:08:40 +08:00
def GetTokenExpireOn() -> int:
return GetCurrentTimestamp() + 60 * 60 * 24 * 2 # add 2 day from now
2021-02-07 13:44:16 +08:00
def Str2Bool(strl: str) -> bool:
return strl.lower() == "true"
def GCD(a: int, b: int) -> int:
2021-02-07 13:44:16 +08:00
return math.gcd(a, b)
def LCM(a: int, b: int) -> int:
return (a * b) // GCD(a, b)