【发布时间】:2020-03-11 23:27:18
【问题描述】:
我有一个 Laravel 现有项目,他们使用 Laravel 默认加密(即 Hash::make(''))进行用户注册,因此他们在数据库中保存了这种加密格式的数据。
现在我正在为同一个 MySQL 数据库创建 使用 Node 的 API。所以对于那些密码解密,我使用了 Node bcrypt 包。但是解密不起作用,我JWT 身份验证令牌出现错误。我为此 Node API 使用了“算法”:“RS256”。所以谁能告诉我我做错了什么或者我必须选择另一个包(在节点中) 或任何其他算法(在节点中)。
我认为那是加密。现在,当我使用 Node 创建 API 时,我使用 Node be
【问题讨论】:
-
散列不是加密,你不能将散列后的密码转回纯文本版本......你必须使用任何设施来进行散列检查
-
Laravel 提供加密/解密和哈希逻辑。我希望你的密码使用散列,否则你有一个严重的安全漏洞。但如前所述,散列是一种单向函数。您无法取消哈希以查看纯文本等效项。您只能生成一个哈希并将其与现有哈希进行比较以查看它是否相同。
-
您应该检查哈希值是否与密码匹配。使用节点 bcrypt 包,您似乎需要这个://从您的密码数据库加载哈希。 bcrypt.compare(myPlaintextPassword, hash, function(err, res) { // res == true });
-
我不希望哈希密码给我一个纯文本版本。我只是问为什么 bcrypt.compare 在我的 Node API 中不起作用(如果 laravel 使用 bcrypt 或 HASH)。 @Hamid 我做了同样的事情,但不知道出了什么问题?节点中的这个唯一包是 bcrypt 对吗?
-
你找到解决办法了吗?
标签: node.js laravel authentication bcrypt