woocommerce 如何加密密码?

How does woo commerce encrypt passwords?

我有一个安装了 woo commerce 的网站。我目前将其用作在线商店。但是我想制作一个应用程序版本的网站,以便人们可以在应用程序和网站上注册、登录和购买东西。

所以我想我必须像 woo commerce 加密用户密码一样加密用户密码,这样从应用程序发送的密码与通过 woo commerce 发送的密码具有相同的哈希值。

问题是我不知道 woo commerce 如何加密他们的密码,我尝试搜索它但没有得到任何东西。

虽然我有预感 WordPress 和 Woo commerce 以相同的方式加密密码,直到我使用相同的密码创建了两个帐户,一个通过 WordPress,一个通过 woo commerce,并且它们的哈希值在我的数据库中出现不同。

如果有人能帮我弄清楚如何在不取消我已有的 woo commerce 登录系统的情况下最好地拥有两个相同的密码哈希器,我将不胜感激。

或者:如果有人能告诉我 woo commerce 用来加密密码的 php 文件在哪里,那也太棒了!

提前致谢。

这篇评论显然太长了...

如果您在更改某人的密码后查看 wp_users table,他们的 user_pass 字段将看起来像 $P$BCaLL1.Kcf3mWvwhEvQedwyX.etREw.$P$ 是一个标志,表示 PHPass 生成了密码。接下来的 8 个字符 BCaLL1.K 是随机盐,对每个用户都是唯一的。其余字符是 运行 对密码多次使用哈希函数 (bcrypt) 的结果,每次要再次 运行 哈希时,都会将盐附加到值。

您可能认为以明文形式使用盐存在安全风险,但每条记录具有唯一的盐会使使用彩虹 tables 破解密码变得更加困难,并且 运行ning哈希算法多次并每次加盐使得破解计算成本高。

要回答您原来的问题,wp_hash_password() 函数是开始的地方。您可以看到它如何与 PHPass 交互以生成哈希。

事实证明,woo commerce 和 WordPress 使用相同的密码哈希器(在本例中为 phpass)。

但是,密码哈希器不会以相同的方式对同一个密码进行两次哈希处理。因此,检查明文密码是否与加密密码相同的唯一方法是 运行 一个特殊函数。

在这种情况下,phpass 的特殊函数是 'checkpassword':

$correct = 'original password here';
$hash = 'some hashed password (eg. $P$BzunkYjtVU1F6Derj3.2sNslS.4jL6/)';
$check = $t_hasher->CheckPassword($correct, $hash);

if ($check){
  echo "The passwords are the same";
}else
  echo "The passwords are not the same";

在示例中,它根据散列值检查纯文本密码以查看它们是否相同。有关它的更多信息可以在 phpass 下载文件夹中的 'test.php' 文件中找到。

在我的例子中,我只需要下载 phpass 并实现 'checkpassword' 功能。