Moodle 将散列密码以以下格式保存在用户表中:
如果存储的密码是:
<input id="full_name" type="text" class="form-control" name="name" placeholder="John Doe" value=""> <input id="phone_number" type="text" class="form-control" name="phone" placeholder="+1(444)444-44444" value="">
然后:
$2y$10$UB6vKrpw227eqVXj2PiPou9c0eRtxsdU02fo9.wc3VtsA2FI.gS6a
=使用的哈希算法的ID(crypt_blowfish),以美元符号括起来。
$2y$
=使用该算法(两位数)后跟一个美元符号的费用。
10$
=随机生成的安全盐(22个字符)。
UB6vKrpw227eqVXj2PiPou
=哈希(31个字符)。
我在文本中输入了普通密码。我不知道如何使用Python进行检查。
答案 0 :(得分:2)
只需使用bcrypt
即可完成
pip install bcrypt
然后只需调用checkpw()
函数即可:
import bcrypt
hashed = b'$2y$10$UB6vKrpw227eqVXj2PiPou9c0eRtxsdU02fo9.wc3VtsA2FI.gS6a'
password = input('Enter password:').encode()
if bcrypt.checkpw(password, hashed):
print('Correct password entered!')
else:
print('Password is wrong!')
请注意,bcrypt使用的是字节而不是字符串,这就是为什么用户输入必须通过.encode()
运行的原因。