Moodle 3.7密码哈希生成算法实现及相关文件位置问询
Moodle 3.7 密码哈希相关问题解答
1. 密码哈希生成算法的实现文件
Moodle 3.7的内部用户密码哈希生成逻辑实现在站点根目录下的/lib/moodlelib.php文件中,核心生成函数为hash_internal_user_password(),配套的密码校验函数为validate_internal_user_password(),均定义在该文件内。
2. 盐值存储位置
Moodle没有将盐值单独存储在文件中:
- 其默认使用bcrypt哈希算法,该算法生成的哈希字符串本身就已嵌入随机盐、哈希成本等参数
- 最终生成的完整哈希串会直接存储在数据库
mdl_user表的password字段中,不需要单独维护盐值存储文件
3. 给出的代码写法是否符合Moodle算法逻辑
你提供的代码片段如下:
password_hash( "123", PASSWORD_BCRYPT, array( "salt" => "SALT" ) );
该写法不符合Moodle的默认实现逻辑,原因如下:
- Moodle默认不会手动指定固定盐值,调用
password_hash时不传入salt参数,由PHP自动生成符合安全要求的随机盐 - 手动传入固定盐的写法在PHP 7.0及以上版本已被官方废弃,会抛出废弃警告
- Moodle会额外根据全局配置调整bcrypt算法的成本参数,默认成本值为10,你提供的代码未指定该参数,会使用PHP默认的成本配置,和Moodle默认逻辑不一致
内容的提问来源于stack exchange,提问作者nileh91890
相关产品推荐
相关产品推荐

