将PHP生成的SHA1密码迁移到JavaScript中的Bcrypt

问题描述 投票:0回答:1

我正在或多或少地处于加密方面,花了几天时间,我需要帮助。

计划是向用户发送邮件,让他们登录,针对SHA1验证其密码,然后使用Bcrypt加密提供的密码,以替换现有密码。

我有一个“用户”表,其中包含由PHP中IonAuthFlexiAuth的组合生成的密码,以及每个密码的相应盐值。

根据IonAuth的配置文件,密码应该为SHA1。

[我已经通过现有的Bcrypt方法运行了一个我所知道的SHA1加密密码,并且密码和带盐的密码也都为假,因此我至少取消了Bcrypt作为可能的算法。

因此,出于测试目的,我使用的是已知且有效用户名和密码。

我已经用Vue,Node,Express等重写了应用程序,并尝试:

let password = passwordHash.verify(providedPassword + user.salt, user.password)
console.log("Users:password", password)

…但是密码和加盐的密码都为假。

我正在为节点使用旧式passwordHash模块,因为我无法找到其他任何东西,并且我怀疑这会因为它的哈希字符串前面加上了“ sha1”而无法正常工作]

作为参考,“用户”表中的哈希密码字符串以“ $ 2a $ 08 $…”开头,而Bcrypt在Node中生成的密码字符串以“ $ 2a $ 10 $…”开头]

有什么想法吗?

php node.js bcrypt sha
1个回答
1
投票

我不知道你在问什么:

根据IonAuth的配置文件,密码应为SHA1。

好可以由他们决定。如果愿意,可以使用猪拉丁。

[我已经通过现有的Bcrypt方法运行了一个我所知道的SHA1加密密码,并且密码和带盐的密码也都为假,因此我至少取消了Bcrypt作为可能的算法。

SHA-1不是加密的;它是哈希。您是否通过bcrypt运行SHA-1 hashed密码?还是通过bcrypt运行password

而且密码和加盐密码也都为假

你是什么意思盐? bcrypt提供盐。您不提供盐。好的,因此您消除了bcrypt。

但是有什么问题?您无法登录吗?您的基础框架无法验证自己的凭据?您收到验证错误吗?

简短版本:我no知道你在做什么。

但是

  • 不管这个离子框架怎么说
  • 与SHA-1无关
  • 不管有无盐(?!)盐
  • 无论将密码与密码的sha-1哈希传递给bcrypt:

似乎您是在要求识别某人在某处生成的哈希密码。

两者:

  • $2a$08$…
  • $2a$10$…

绝对绝对是bcrypt。

第一个是成本系数为8(即2 8]回合)的bcrypt。第二个是价格为10(即2 10回合)的bcrypt。

无论是什么,都应该使用12的成本因数(以便花费约250ms的时间来产生。)>

因此,我将从消除此框架提供的所有杂项“ helpfully”

开始,并调用bcrypt。

我不再使用javascript,也不知道这是什么bcrypt库。但是每个值得其盐分的bcrypt库都具有如下功能:

String hash = bcrypt.hashPassword("hunter2", 12);

Boolean passwordMatch = bcrypt.verifyPassword("hunter2", hash);

有人试图在密码后加盐的事实:

providedPassword + user.salt

绝对错误。

不管

如果没有别的:您显示的那些保存的字符串are

bcrypt。
  • [$1$:基于MD5的加密('md5crypt')] >>
  • $2$:基于河豚的地穴('bcrypt')
  • $2a$:bcrypt;已更新为文档UTF8和空终止符
  • $2b$:bcrypt;由OpenBSD生成,而早期版本中没有错误
  • [$2x$:由一个越野车php实现生成的bcrypt散列]
  • [$2y$:由一个固定的php实现生成的bcrypt哈希]
  • [$sha1$:基于SHA-1的加密('sha1crypt')] >>
  • $5$:基于SHA-256的crypt('sha256crypt')
  • $6$:基于SHA-512的crypt('sha512crypt')
  • 您说您已经淘汰了bcrypt。

    我向您保证,bcrypt。

    我建议您获得这个精美的框架,并直接使用bcrypt。确认可以正确后:

    • 哈希
  • 商店
  • 验证

    使用bcrypt的密码,然后您可以尝试调试此未公开的离子库。

© www.soinside.com 2019 - 2024. All rights reserved.