因此,我希望能够在 user_pass 列中更改我的 wordpress wp_user 表中存在的密码哈希。我希望能够写出如下内容:
# simplified version of what is desired.
UPDATE `wp_user` SET user_pass = MD5('123') WHERE user_email = 'some_dudes@someplace.com';
基本上,我希望能够在 mysql 中设置用户密码,以便在我使用查询设置后,当用户通过登录表单输入密码时,wordpress 将继续接受此密码为有效密码。我正在查看有关此的 PHPass 信息以及class-phpass.php
wordpress 源代码中的内容。根据我的研究,这似乎非常复杂,如果不是不可行的话。我是否遗漏了什么,或者这实际上是为了难以处理或可能被混淆?是否可以在 MySQL 中复制此功能?任何帮助,将不胜感激。非常感谢你。
关于进度的编辑:如果您只需要开发级别的安全性,那么您实际上可以使用以下内容:
UPDATE `wp_user` SET user_pass = MD5('123') WHERE id = 1342;
我应该更好地解释为什么会这样。出于遗留兼容性原因,Wordpress 将默认使用 MD5 哈希。基本上,当将密码传递给 wordpress 时,它会运行 wordpress PHPass 哈希,这将失败,例如MD5('123')
然后 wordpress 将尝试其他更简单的哈希算法,如 SHA1,最后是 MD5。然后,如果在其中一个上找到匹配项,wordpress 实际上会更新相关记录的密码列。它将给定的密码更新为 PHPass。发生这种情况后,您仍然可以继续前进。这基本上适用于开发环境,但是与 PHPass 的工作相匹配的 MySQL 查询是一项史诗般的任务。如果我破解它,那将是我的下一个更新。显然,wordpress 正在运行加盐的河豚哈希大约 8000 次以生成最终的哈希结果。