我有一个安装了woo commerce的网站 . 我目前正在将它用作在线商店 . 但是,我想制作一个网站的应用版本,以便人们可以在应用程序和网站上注册,登录和购买东西 .
所以我认为我必须加密用户密码,就像商业加密它一样,这样从应用程序发送的密码将具有与通过woo商务发送的密码相同的哈希 .
问题是我不知道woo商业如何加密他们的密码,我试图搜索它但没有得到任何东西 .
虽然我有一种预感,WordPress和Woo商业以相同的方式加密密码,直到我用相同的密码制作两个帐户,一个通过WordPress和一个通过woo商务和他们的哈希在我的数据库中出现不同 .
如果有人可以帮我弄清楚如何拥有两个相同的密码保护程序,最好不要使用我已经拥有的woo商务登录系统,我将非常感激 .
或者:如果有人可以告诉我,商业用来加密密码的php文件在哪里也会很棒!
提前致谢 .
2 回答
对于评论来说,这显然太长了......
如果在更改某人的密码后查看wp_users表,则其user_pass字段将看起来像
$P$BCaLL1.Kcf3mWvwhEvQedwyX.etREw.
.$P$
是一个标志,表示PHPass生成了密码 . 接下来的8个字符BCaLL1.K
是一个随机的盐's unique for every user. And the remaining characters are the result of running a hashing function (bcrypt) on the password a number of times, appending the salt to the value each time it's即将再次运行哈希 .您可能认为明文中存在盐是一种安全风险,但每条记录具有独特的盐会使得使用彩虹表更难破解密码,并且多次运行哈希算法并且每次使用盐算法使得计算成本高昂裂纹 .
要回答您的原始问题,
wp_hash_password()
功能是开始的地方 . 您可以看到它如何与PHPass交互以生成哈希 .事实证明,woo commerce和WordPress确实使用相同的密码hasher(在本例中为phpass) .
但是,密码hasher不会以相同的方式两次散列相同的密码 . 因此,检查纯文本中给出的密码是否与加密的密码相同的唯一方法是运行特殊功能 .
在这种情况下,phpass的特殊功能是'checkpassword':
在示例中,它根据哈希检查纯文本密码,以查看它们是否相同 . 有关它的更多信息可以在phpass下载文件夹中的'test.php'文件中找到 .
在我的情况下,我只需下载phpass并实现'checkpassword'功能 .