【问题标题】:Decrypt Laravel user password in Node API (using becrypt package) is not working在 Node API 中解密 Laravel 用户密码(使用 becrypt 包)不起作用
【发布时间】: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


【解决方案1】:

Laravel 中的密码是经过哈希处理的,加密方式是不同的,因为哈希是不可逆的,加密时可以反转。

此外,为了让 Node 能够解密加密数据,你应该与 Node 共享 Laravel 用来加密数据的密钥,这绝对非常危险,因为每个人都不能拥有那个密钥,所以如果他发现你的 sql 中有漏洞,比如可能运行 SQL 注入,那么他就可以使用该密钥来解密该数据

【讨论】:

  • 幸运的是他们没有处理加密 :)
  • @Alberto 感谢您的贡献。我需要知道为什么 bcrypt.compare 在我的 Node API 中不起作用。是否有任何其他包可以比较此密码
  • 哦,抱歉,也许我误解了这个问题……所以,你有 2 个项目,一个是 PHP Laravel,第二个是用于 API 的 Node js,对吧?你是说 Node api 不能从数据库中解密一些以前被 Laravel 加密的信息,对吧?所以我可以建议你首先检查节点版本与 Laravel 加密版本的兼容性,其次检查 Node 上设置的密钥是否与 APP_KEY 下的 .env 上设置的密钥相同Laravel 项目
  • 检查兼容性,我的意思是stackoverflow.com/questions/26643587/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-01
  • 2018-11-22
  • 1970-01-01
  • 2021-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多