我必须重建一个从Ruby on Rails到Node的项目.js.

该散列$2a$11$j2IA8cPRFFC4YOXTl5kb9eF02fwNdLyFAPOvflQ3h/QdX8mE1SNK2用于密码Test1234.我已经判断了Ruby on Rails代码,并看到了以下散列密码的函数

General info

COST = 11
SALT = 1234567890

Create hash

def password_hash(password)
  pwd = "#{password}#{SALT}"
  ::BCrypt::Password.create(pwd, cost: COST)
end

Does passwords match?

def password_match?(password = nil)
  password ||= @params[:password]
  encrypted_password = get_encrypted_password
  return false if !encrypted_password || encrypted_password.size < 8

  pwd = "#{password}#{SALT}"
  BCrypt::Password.new(encrypted_password) == pwd
end

def get_encrypted_password
  return unless @account

  @account.encrypted_password
end

就我对Ruby的了解而言,这意味着在password_match函数中,pwd将是Test12341234567890,如果Test12341234567890 (pwd)与哈希匹配,则判断BCrypt::Password.new($2a$11$j2IA8cPRFFC4YOXTl5kb9eF02fwNdLyFAPOvflQ3h/QdX8mE1SNK2).

当我使用像https://bcrypt.online/这样的在线Bcrypt验证器并输入哈希值和pwd值时,我没有得到匹配.

我还try 在Javascript包中使用bcrypt.compare方法,但这也不起作用.

我错过了什么?

推荐答案

所以我们做了一个糟糕的决定,并在 comments 中解决了这个问题.下面是对这一切的概述,作为答案.

我:

我用"Test1234"和你的salt

BCrypt::密码.新建(password\u hash("Test1234"))==

还try 了 node .js与bcryptjs和did

托尔:

是的,这是您使用相同方法创建的新哈希.但对一些人来说

我:

这应该让你知道问题不在于Ruby的

托尔:

感谢您的 comments !根据你的 comments ,我发现他们使用了

Javascript相关问答推荐

单击更新页面的按钮后,页面刷新;测试/断言超时,有两个标题,但没有一个标题

为什么我的includes声明需要整个字符串?

如何禁用附加图标点击的v—自动完成事件

在nextjs服务器端api调用中传递认证凭证

如何从网站www.example.com获取表与Cheerio谷歌应用程序脚本

在Java中寻找三次Bezier曲线上的点及其Angular

如何在Angular拖放组件中同步数组?

在Reaction中的handleSubmit按钮内,useSelector值仍然为空

如何使用JS创建一个明暗功能按钮?

如何在我的Next.js项目中.blob()我的图像文件?

如何利用CSS中的隐藏元素实现平滑扩展和防止网格行间隙

如何在Java脚本中对列表中的特定元素进行排序?

如何找到带有特定文本和测试ID的div?

在Java脚本中构建接口的对象

MAT-TREE更多文本边框对齐问题

如何导入我在Web Worker创建的函数?

Oracle APEX-如何调用Java脚本函数

使用Java脚本的响应页面

Mongoose DeleteOne()和DeleteMany()不工作

在脚本设置中使用Vue3 v-html,无需额外的换行标记