blob: 47e454e1ae5be7bdd095fa3584177ff52e870058 (
plain) (
tree)
|
|
import hmac as hmaca
from base64 import b64decode, b64encode
def hmac(hf, key, msg):
return hmaca.new(key, msg=msg, digestmod=hf).digest()
def h(hf, msg):
return hf(msg).digest()
def hi(hf, password, salt, iterations):
u = ui = hmac(hf, password, salt + b"\x00\x00\x00\x01")
for i in range(iterations - 1):
ui = hmac(hf, password, ui)
u = xor(u, ui)
return u
def xor(bytes1, bytes2):
return bytes(a ^ b for a, b in zip(bytes1, bytes2))
def b64enc(binary):
return b64encode(binary).decode("utf8")
def b64dec(string):
return b64decode(string)
def uenc(string):
return string.encode("utf-8")
|