【问题标题】:Check Moodle's hashed password检查 Moodle 的哈希密码
【发布时间】:2019-04-07 21:09:45
【问题描述】:

Moodle 将散列密码保存在用户表中,格式如下:

如果存储的密码是:

$2y$10$UB6vKrpw227eqVXj2PiPou9c0eRtxsdU02fo9.wc3VtsA2FI.gS6a
那么:
$2y$ = 使用的散列算法的 ID (crypt_blowfish),用美元符号括起来。
10$ = 使用该算法的成本(两位数),后跟一个美元符号。
UB6vKrpw227eqVXj2PiPou = 随机生成的安全盐(22 个字符)。
9c0eRtxsdU02fo9.wc3VtsA2FI.gS6a = 哈希(31 个字符)。

我有纯文本密码。我不知道如何用 Python 来检查它。

【问题讨论】:

    标签: python hash cryptography moodle


    【解决方案1】:

    只需使用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() 运行。

    【讨论】:

    • 这不是pip install py-bcrypt 而且好像hashed 是静态的。
    • 并且通过运行代码我得到了错误ValueError: Invalid hashed_password salt
    • @sphoenix 不,它应该是pip install bcrypt,根据pypi.org/project/bcrypt 但是,我没有尝试过,因为我使用anaconda 安装它。奇怪的是你得到那个错误。这对我来说可以。您使用的是哪个 python 版本和哪个 bcrypt 版本 (bcrypt.__version__)?
    • @sphoenix “hashed 是静态的”是什么意思?它是一个bytes 对象,很可能您会通过查找以用户名作为键的值来获取它。
    • python 3.5.2, bcrypt: 3.1.4
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-27
    • 2015-09-28
    • 1970-01-01
    • 2013-10-24
    • 2021-10-03
    • 2018-02-11
    • 1970-01-01
    相关资源
    最近更新 更多