Хорошо, так что благодаря @jwag и еще нескольким поискам исходного кода Flask -Security мне удалось это сделать.
Для тех, кто находится в той же ситуации, вот что я сделал:
import hmac
import hashlib
import base64
from passlib.context import CryptContext
text_type = str
salt = "YOUR_SALT_HERE"
def get_pw_context ():
pw_hash = 'pbkdf2_sha512'
schemes = ['bcrypt', 'des_crypt', 'pbkdf2_sha256', 'pbkdf2_sha512', 'sha256_crypt', 'sha512_crypt', 'plaintext']
deprecated = ['auto']
return CryptContext (schemes=schemes, default=pw_hash, deprecated=deprecated)
def encode_string(string):
if isinstance(string, text_type):
string = string.encode('utf-8')
return string
def get_hmac (password):
h = hmac.new(encode_string(salt), encode_string(password), hashlib.sha512)
return base64.b64encode(h.digest())
def verify_password (password, hash):
return get_pw_context().verify(get_hmac(password), hash)
# Finally
verify_password ("MY_PASSWORD", "MY_PASSWORD_HASH")