Prestashop客户Web服务密码

时间:2018-06-25 22:23:23

标签: angular prestashop md5

我正在针对Prestashop Web服务开发来自angular和ionic3的登录名。我可以访问网络api,并且通话正常。 问题是我已经搜索了如何加密用户针对prestashop输入的密码,但密码不匹配。

我已经阅读了很多文章,并且我知道prestashop的工作方式是对md5密码进行加密,并在密码后面加上密码。 为:

md5(_cookier_key_ + userPassword)

我尝试像上一个示例一样对我的密码进行加密(我有_cookier_key_ +我的密码),md5加密的结果如下: f01e5b4d319dba0b6d41ec601d7720fd

但是在我的prestashop webapi中,它显示的密码相同: $ 2y $ 10 $ 36OeM33DN5zqrKWMnXqgz.RDzVorpZDl3do3UaRuhwDhlXsOh.jwO

哪种类型的加密会生成$和。 ?

我可以看到我的prestashop的某些用户的密码由md5组成,如下所示: 0367d421dd907a86d980a69dbb033589 但其他客户的密码如下: $ 2y $ 10 $ I5OGoI4HcqGTyee9W5Hvt.5fu / sJnH8I8dv9UoL38s.v1oqhhGyaO

发生了什么事?

提前一千次感谢

2 个答案:

答案 0 :(得分:0)

正如您在Hashing.php中所看到的,Prestashop使用bcrypt作为密码哈希函数,因此您在数据库的密码列中看到的字符串是应用它的结果。

为了检查离子密码是否正确,必须使用bcrypt验证程序功能。所以放手吧:

1-在您的离子项目中安装bcryptjs

npm install bcryptjs --save

npm install @types/bcryptjs --save

2-将bcrypt导入您要检查密码的.ts文件中

import * as BcryptJS from "bcryptjs";

3-检查密码:

示例:$ 2y $ 10 $ pUxl49suKpBXDYzXfDf7x.E2n9xyP7OWKrTs3jWxkX1C / ml10lypK-> prestashop生成的字符串,并以'admin'密码存储在数据库中

BcryptJS.compareSync('admin', '$2y$10$pUxl49suKpBXDYzXfDf7x.E2n9xyP7OWKrTs3jWxkX1C/ml10lypK'); // returns true


BcryptJS.compareSync('test', '$2y$10$pUxl49suKpBXDYzXfDf7x.E2n9xyP7OWKrTs3jWxkX1C/ml10lypK'); // returns false

答案 1 :(得分:0)

是的,谢谢@alanjs

实际上,我已经找到了解决方案,但是如果有更多的人发现问题,我还没有时间进行自我解答。

在Prestashop中,由于md5不再安全,因此有两种加密类型。 MD5和BCrypt。未更改密码的旧用户的密码使用md5加密,新用户使用BCrypt加密。

问题是我无法访问prestashop代码,因此无法看到正在使用的加密方法。

无论如何,非常感谢,您所描述的步骤正是我在另一篇文章中所找到的以及有效的步骤。