use*_*059 2 python bcrypt werkzeug
是否可以使用以下方法解密先前哈希的密码:
Bcrypt - $2b$12$
使用时:
from werkzeug.security import generate_password_hash, check_password_hash
我有点假设,如果我可以指定werkzeug.security应使用哪种哈希算法来检查密码,那么即使它们是不同的工具,它也会起作用。
也许我太天真了。
我像这样加密了密码:
application = Flask(__name__)
bc = Bcrypt(application)
password=bc.generate_password_hash(data['password_input'])
Run Code Online (Sandbox Code Playgroud)
但想像这样解密:
application = Flask(__name__)
from werkzeug.security import generate_password_hash, check_password_hash
if check_password_hash(user.password, password):
pass
Run Code Online (Sandbox Code Playgroud)
示例(虚拟)哈希:
$2b$12$98WSJfIg.YkR/Bn469IX4OlOCJx.HMWKxR8NysSynGa8QHf/4rawq
Run Code Online (Sandbox Code Playgroud)
我会使用 Bcrypt 库,但由于http://stackoverflow.com/questions/41854768/flask-bcrypt-attributeerror-module-object-has-no-,我无法让它与 Elastic Beanstalk 一起使用属性-ffi-部署。
不,你不能这样做。这就是首先使用Bcrypt加密密码的全部意义。如果您能够从散列中恢复密码,那么任何对数据库的破坏都会导致用户的凭据被访问,并且散列并不比以明文形式存储密码更好。在此处查看有关密码散列的更多信息。
您所能做的就是接受新的密码尝试,对其进行哈希处理,并将该哈希值与您已知的哈希值进行比较。check_password_hash无法处理 Bcrypt 哈希,因此您需要使用它bcrypt.hashpw来执行此操作
import bcrypt
isSamePassword = bcrypt.hashpw(new_password, stored_hash)
Run Code Online (Sandbox Code Playgroud)