gpt4 book ai didi

Laravel 和 Meteor 密码哈希

转载 作者:行者123 更新时间:2023-12-02 11:14:08 26 4
gpt4 key购买 nike

我有两个应用程序,一个在 Laravel 5.2 中,一个在 Meteor 中。我想收集与两个平台兼容的密码哈希值。

数据库单独存储哈希值

  • Laravel 的密码
  • meteor_password 用于 Meteor。

两个平台默认都使用 10 轮的 bcrypt,但 Meteor 似乎在 bcrypt 之前对明文密码进行 sha256 处理。

如果 Meteor 创建密码哈希 abc,我可以对纯密码进行 sha256,并使用 Laravel 的内部结构将其与 abc 进行比较,即 Auth::attempt()

$sha256 = hash('sha256', $request->get('password'), false);

这有效。 Laravel 成功验证了用户身份。

但是,如果我在 Laravel 中注册一个新用户,并存储哈希 meteor_password,那么当在 Meteor 中针对该哈希进行身份验证时,它会失败并显示错误消息“登录禁止”。 This error appears to be mean incorrect credentials.

我创建哈希的方式与在 Laravel 中验证它时的方式相同。

$meteor_password = bcrypt(hash('sha256', $plain, false));

这似乎很奇怪,它以一种方式工作,而不是以另一种方式工作,所以我想我错过了一些东西。

最佳答案

2011 年,PHP 的 BCrypt 实现中发现了一个错误,因此他们changed原始的 2a 版本指示符为 2x2y(今天使用),以指示密码已通过固定版本进行哈希处理。

因此,PHP 的 2y 生成的哈希值应该与节点的 2a 生成的哈希值相同。

应该更改前缀,以便 NPM 模块(由 Meteor 使用)正确处理,因为它 does not acknowledge 2y .

$meteor_password = bcrypt(hash('sha256', $plain, false));
// replace it useing something like:
$meteor_password = str_replace('$2y', '$2a', $meteor_password);
// or
$meteor_password[2] = 'a';

关于Laravel 和 Meteor 密码哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35228620/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com