Prestashop 客户 WebService 密码
Prestashop Customers WebService passwd
我正在针对 prestashop web 服务从 angular 和 ionic3 开发登录。我可以访问网络 api 并且通话正常。
问题是我搜索了如何加密用户针对 prestashop 写入的密码,但它们不匹配。
我看了很多帖子,知道prestashop的工作方式是加密md5密码,密码后跟密码。
作为:
md5 (_cookier_key_ + 用户密码)
我尝试像前面的例子一样加密我的密码(我有 _cookier_key_ + 我的密码)md5 加密的结果如下:
f01e5b4d319dba0b6d41ec601d7720fd
但在我的 prestashop 网络中api 相同的密码显示如下:
$2y$10$36OeM33DN5zqrKWMnXqgz.RDzVorpZDl3do3UaRuhwDhlXsOh.jwO
什么类型的加密生成 $ 和 . ?
我可以看到我的 prestashop 的一些用户的密码格式为 md5:
0367d421dd907a86d980a69dbb033589
但其他客户的密码如下:
$2y$10$I5OGoI4HcqGTyee9W5Hvt.5fu/sJnH8I8dv9UoL38s.v1oqhhGyaO
发生了什么事?
先谢谢你
正如您在 Hashing.php 中看到的那样,Prestashop 使用 bcrypt 作为密码哈希函数,因此您在数据库密码列中看到的字符串是应用它的结果。
为了检查 ionic 的密码是否正确,您必须使用 bcrypt 验证程序功能。那么我们开始吧:
1- 在你的离子项目中安装 bcryptjs
npm install bcryptjs --save
npm install @types/bcryptjs --save
2 - 在您要检查密码的 .ts 文件中导入 bcrypt
import * as BcryptJS from "bcryptjs";
3 - 检查密码:
示例:$2y$10$pUxl49suKpBXDYzXfDf7x。E2n9xyP7OWKrTs3jWxkX1C/ml10lypK --> 由 prestashop 生成并存储在数据库中的字符串 'admin' 密码
BcryptJS.compareSync('admin', 'y$pUxl49suKpBXDYzXfDf7x.E2n9xyP7OWKrTs3jWxkX1C/ml10lypK'); // returns true
BcryptJS.compareSync('test', 'y$pUxl49suKpBXDYzXfDf7x.E2n9xyP7OWKrTs3jWxkX1C/ml10lypK'); // returns false
是的,谢谢@alanjs
其实我已经找到了解决方案,但我没有时间自己回答,以防有更多人发现问题。
在 Prestashop 中,由于 md5 不再安全,因此有 2 种加密方式。 MD5 和 BCrypt。没有修改过密码的老用户密码用md5加密,新用户用BCrypt加密。
问题是我无法访问 prestashop 代码,因此看不到正在使用的加密方法。
无论如何,非常感谢您,您描述的步骤正是我在另一个 post 中找到的并且有效的步骤。
我正在针对 prestashop web 服务从 angular 和 ionic3 开发登录。我可以访问网络 api 并且通话正常。 问题是我搜索了如何加密用户针对 prestashop 写入的密码,但它们不匹配。
我看了很多帖子,知道prestashop的工作方式是加密md5密码,密码后跟密码。 作为:
md5 (_cookier_key_ + 用户密码)
我尝试像前面的例子一样加密我的密码(我有 _cookier_key_ + 我的密码)md5 加密的结果如下: f01e5b4d319dba0b6d41ec601d7720fd
但在我的 prestashop 网络中api 相同的密码显示如下: $2y$10$36OeM33DN5zqrKWMnXqgz.RDzVorpZDl3do3UaRuhwDhlXsOh.jwO
什么类型的加密生成 $ 和 . ?
我可以看到我的 prestashop 的一些用户的密码格式为 md5: 0367d421dd907a86d980a69dbb033589 但其他客户的密码如下: $2y$10$I5OGoI4HcqGTyee9W5Hvt.5fu/sJnH8I8dv9UoL38s.v1oqhhGyaO
发生了什么事?
先谢谢你
正如您在 Hashing.php 中看到的那样,Prestashop 使用 bcrypt 作为密码哈希函数,因此您在数据库密码列中看到的字符串是应用它的结果。
为了检查 ionic 的密码是否正确,您必须使用 bcrypt 验证程序功能。那么我们开始吧:
1- 在你的离子项目中安装 bcryptjs
npm install bcryptjs --save
npm install @types/bcryptjs --save
2 - 在您要检查密码的 .ts 文件中导入 bcrypt
import * as BcryptJS from "bcryptjs";
3 - 检查密码:
示例:$2y$10$pUxl49suKpBXDYzXfDf7x。E2n9xyP7OWKrTs3jWxkX1C/ml10lypK --> 由 prestashop 生成并存储在数据库中的字符串 'admin' 密码
BcryptJS.compareSync('admin', 'y$pUxl49suKpBXDYzXfDf7x.E2n9xyP7OWKrTs3jWxkX1C/ml10lypK'); // returns true
BcryptJS.compareSync('test', 'y$pUxl49suKpBXDYzXfDf7x.E2n9xyP7OWKrTs3jWxkX1C/ml10lypK'); // returns false
是的,谢谢@alanjs
其实我已经找到了解决方案,但我没有时间自己回答,以防有更多人发现问题。
在 Prestashop 中,由于 md5 不再安全,因此有 2 种加密方式。 MD5 和 BCrypt。没有修改过密码的老用户密码用md5加密,新用户用BCrypt加密。
问题是我无法访问 prestashop 代码,因此看不到正在使用的加密方法。
无论如何,非常感谢您,您描述的步骤正是我在另一个 post 中找到的并且有效的步骤。