问题标签 [bcrypt-ruby]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - 在 Rails 中使用 BCrypt 手动验证
我正在尝试在我的 rails 应用程序中使用 BCrypt 来安全地保存用户的密码。我能够很好地保存加密密码,甚至将其与原始纯文本字符串进行比较以成功验证它。问题似乎是,每次我加密密码时,我都会得到不同的输出(我假设是由于一些盐或其他原因),并且在保存到数据库后验证不成立(我保存在sqlite3 数据库,如果它有所作为)。
例如(在 Rails 控制台中):
我知道有现成的解决方案,如 has_secure_password,但我想手动实现它以真正了解发生了什么。
ruby-on-rails - Rails 网站的 Bcrypt 可扩展性如何?
我知道 Bcrypt 的全部意义在于在散列以限制暴力攻击的实用性时会耗费大量时间。但是,这不是使它本质上不可扩展吗?例如,我读过的一个网站声称应该调整 Bcrypt 中的成本因素,以便在当前硬件上散列需要 0.25 秒。如果您有一个中等成功的网站,即使有几百人随时登录,0.25 秒的复合时间是否会使每个用户都可能等待几秒钟?散列 0.25 秒时服务器的 CPU 是否会达到最大值,从而导致持续的高资源使用?
作为第二个问题,假设它是可扩展的(我确信它是可扩展的),这些天合适的成本因素是多少?
ruby-on-rails - 带有 Omniauth 身份的“BCrypt::Errors::InvalidHash: invalid hash”
我有一个带有 Omniauth Identity 的 Rails 4 应用程序,在生产中我为一些用户(一些)遇到了一些错误:
我已经使用 hash_valid 方法测试了所有身份密码摘要?
而且都有好的。
所以我猜这个问题来自用户提供的密码,但我知道在哪里,我无法重现开发中的错误。
登录表格是一个基本的表格:
任何想法,谢谢?
ruby-on-rails - 无法让 BCrypt 身份验证工作
我正在尝试设置一个简单的 iOS/Rails 应用程序,我可以在其中创建用户并随后使用 BCrypt 对其进行身份验证。我尝试按照 BCrypt 的说明进行操作,但我的身份验证过程不起作用。对rails非常陌生,所以我确定我搞砸了一些简单的事情!
创建新用户:
在 users_controller.rb
在用户.rb
在服务器上:
在 2014-08-21 19:32:05 -0500 开始 POST "/users.json" for 192.168.2.6 由 UsersController#create as JSON 参数处理:{"username"=>"testtest", "password"=>" [FILTERED]", "user"=>{"username"=>"testtest"}} (0.1ms) 开始事务用户存在 (20.8ms) SELECT 1 AS one FROM "users" WHERE "users"."username" = 'testtest' LIMIT 1 为string
列上的类型插入二进制数据password_hash
SQL (0.8ms) INSERT INTO "users" ("created_at", "password_hash", "updated_at", "username") VALUES (?, ?, ?, ?) [["created_at", "2014-08-22 00 :32:05.960378"], ["password_hash", "$2a$10$UzLdD7ytQXKRDU5MhAawJuFQ3R4oQlPyXh/V4GehNP692fsSpK6wK"], ["updated_at", "2014-08-22 00:32:05.960378"], ["用户名" ]] (1.3ms) 提交事务 Rendered users/show.json.jbuilder (0.3ms) Completed 201 Created in 136ms (Views: 31.9ms | ActiveRecord: 23.5ms)
验证用户:
在 session_controller.rb 中
在用户.rb
服务器:
*开始 POST "/session" for 192.168.2.6 at 2014-08-21 19:38:26 -0500 由 SessionsController#create as / 参数处理:{"username"=>"testtest", "password"=>"[ FILTERED]", "session"=>{"username"=>"testtest", "password"=>"[FILTERED]"}} 用户负载 (0.2ms) SELECT "users".* FROM "users" WHERE "users "."username" = 'testtest' LIMIT 1 Rendered sessions/fail.json.jbuilder (0.2ms) Completed 200 OK in 105ms (Views: 23.3ms | ActiveRecord: 0.2ms)*
非常感谢您的任何见解!
ruby-on-rails - 我的 bcrypt gem 不工作
我已经成功安装bcrypt - 3.1.7
,之后安装了捆绑包。
但是,bcrypt gem 没有出现在列表中,当我尝试捆绑显示 bcrypt 时,它说:
另外,当我这样做时:
gem 'bcrypt', '~> 3.1.7'
它说:
ERROR: While executing gem.. (Gem::CommandLineError) Unknown command bcrypt
我应该怎么办?
ruby - 为什么 Ruby 的 bcrypt 库在哈希中包含明文中的盐?
我正在使用 Coda Hale 的Ruby bcrypt 库。我最近注意到它并没有像我想象的那样工作。我原以为正确的程序是:
- 生成盐
- 获取密码
- 连接盐和密码字符串
- 通过您的散列函数对它们进行散列
但是当我查看 bcrypt 函数的结果时,似乎 salt 是连接到hash而不是password。那就是盐连接发生在步骤#4之后,而不是之前。我假设 Coda Hale 做得对,但我想知道为什么它会这样。
这是一个简短的 IRB 会议,展示了(对我而言)什么是奇怪的。请注意,在hash_secret
函数的结果中,前 29 个字符与 salt 相同。任何关于为什么会这样的信息将不胜感激。
我唯一的理论是盐是预先添加并嵌入在哈希中的,这消除了将盐存储在单独的数据库字段中的需要(本质上是一种记录打包策略)?
ruby - Ruby BCrypt 密码比较返回不正确的评估
为了安全地存储我的用户密码,我尝试在我的 Sinatra/Ruby 应用程序中使用 BCrypt。
以下代码是我的用户模型。
当我像这样调用 authenticate 方法时:User.authenticate("bar@foo.com", "admin")
,代码返回 false。我确定用户存在。
编辑:
u.password == requested_password
也返回 false
为什么会发生这种情况,即使传递给方法的值是有效且正确的?
ruby-on-rails - 测试环境中使用 Rails 的 user.authenticate() 的意外行为
我想对登录流程进行验收测试,但我遇到了意外的user.authenticate
方法行为。
开发环境中的身份验证按预期工作:带有电子邮件和普通密码对的 POST 完美通过。当我运行测试时出现问题:使用普通密码的身份验证失败。但奇怪的是,它成功了密码的 hash。
这是代码:
class SessionsController < ApplicationController
...
def create
user = User.find_by_email(params[:email].downcase)
logger.debug Rails.env
logger.debug "password #{params[:password]}"
logger.debug user.authenticate(params[:password]).to_yaml
...
以下是不同环境的日志:
env development
password 123456
--- !ruby/object:User
env test
password 123456
--- false
env test
password $2a$10$70AlnpaXIMHtjDUei/1HU.OSEG4WVjW6ens3jzN04bC8SOxTv2Ftm
--- !ruby/object:User
知道我该怎么做才能在测试环境中使用纯密码成功进行身份验证吗?
我bcrypt-ruby
在 ActiveModel 对象中使用密码。
谢谢。
ruby-on-rails - Openshift 不安装 bcrypt
我正在尝试将我的 Ruby on Rails 应用程序推送到 OpenShift,但是 gem 文件 bcrypt 出了点问题。本地一切正常,就在我尝试在 Openshift 端运行时发生此错误。
没有要加载的文件 - bcrypt (LoadError) /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/activesupport-4.1.1/lib/active_support/dependencies.rb: 247:in
require' /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:247:in
块中的要求'/var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:232:inload_dependency' /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:247:in
要求' /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/activemodel-4.1.1/lib/active_model/secure_password.rb:49:inhas_secure_password' /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/app/models/user.rb:13:in
' /var/lib/openshift /548f13fce0b8cdf18c000001/app-root/runtime/repo/app/models/user.rb:1:in<top (required)>' /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:247:in
需要'/var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:247:inblock in require' /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:232:in
load_dependency'/var/lib /openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:247:inrequire' /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:348:in
require_or_load' /var/lib/openshift/548f13fce0b8cdf18c000001/app -root/runtime/repo/vendor/bundle/ruby/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:307:independ_on' /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:225:in
require_dependency' /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo /vendor/bundle/ruby/gems/railties-4.1.1/lib/rails/engine.rb:468:inblock (2 levels) in eager_load!' /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/railties-4.1.1/lib/rails/engine.rb:467:in
每个'/var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/railties-4.1.1/lib/rails/engine.rb:467:inblock in eager_load!' /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/railties-4.1.1/lib/rails/engine.rb:465:in
each'/var/lib /openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/railties-4.1.1/lib/rails/engine.rb:465:ineager_load!' /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/railties-4.1.1/lib/rails/engine.rb:346:in
eager_load!/var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/railties-4.1.1/lib/rails/application/finisher.rb:58:ineach' /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/railties-4.1.1/lib/rails/application/finisher.rb:58:in
block in ' /var/ lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/railties-4.1.1/lib/rails/initializable.rb:30:ininstance_exec' /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/railties-4.1.1/lib/rails/initializable.rb:30:in
run' /var/lib/openshift/548f13fce0b8cdf18c000001/ app-root/runtime/repo/vendor/bundle/ruby/gems/railties-4.1.1/lib/rails/initializable.rb:55:inblock in run_initializers' /opt/rh/ruby200/root/usr/share/ruby/tsort.rb:150:in
阻止 tsort_each' /opt/rh/ruby200/root/usr/share/ruby/tsort.rb:183:inblock (2 levels) in each_strongly_connected_component' /opt/rh/ruby200/root/usr/share/ruby/tsort.rb:219:in
each_strongly_connected_component_from' /opt/rh/ruby200/root/usr/share/ruby/tsort.rb:182:inblock in each_strongly_connected_component' /opt/rh/ruby200/root/usr/share/ruby/tsort.rb:180:in
每个' /opt/rh/ruby200/root/usr/share/ruby/tsort.rb:180:ineach_strongly_connected_component' /opt/rh/ruby200/root/usr/share/ruby/tsort.rb:148:in
tsort_each' /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems /railties-4.1.1/lib/rails/initializable.rb:54:inrun_initializers' /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/railties-4.1.1/lib/rails/application.rb:288:in
初始化!/var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/config/environment.rb:5:in<top (required)>' config.ru:1:in
require' config.ru:1:inblock in <main>' /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/rack-1.5.2/lib/rack/builder.rb:55:in
instance_eval' /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/运行时/repo/vendor/bundle/ruby/gems/rack-1.5.2/lib/rack/builder.rb:55:ininitialize' config.ru:1:in
new' config.ru:1:in<main>' /opt/rh/ruby200/root/usr/share/gems/gems/passenger-4.0.18/helper-scripts/rack-loader.rb:78:in
eval' /opt/rh/ruby200/root/usr/share/gems/gems/passenger-4.0.18/helper-scripts/rack-loader.rb:78:inload_app' /opt/rh/ruby200/root/usr/share/gems/gems/passenger-4.0.18/helper-scripts/rack-loader.rb:96:in
' /opt/rh/ruby200/root/usr/共享/gems/gems/passenger-4.0.18/helper-scripts/rack-loader.rb:4:in<module:PhusionPassenger>' /opt/rh/ruby200/root/usr/share/gems/gems/passenger-4.0.18/helper-scripts/rack-loader.rb:3:in
'
我最新的宝石文件:
源' https://rubygems.org '
...
gem 'bcrypt'
gem 'bcrypt-ruby'
...
我的 Gemfile.lock 包含所需的所有依赖项。
要知道的一个重要事实是,推送修改后的 Openshift 控制台不会安装 gem 文件 bcrypt 和 bcrypt-ruby。跟随 optput
远程:停止 Ruby 墨盒
远程:修复 1 个部署的链接
远程:启用强制清理构建 - 清理依赖
项远程:构建 git ref 'master',提交 cab854c
远程:构建 Ruby 墨盒
远程:捆绑安装 --deployment --path ./app -root/repo/vendor/bundle
remote:注意:您可以使用以下命令阻止安装某些 Gemfile 组:rhc env set
BUNDLE_WITHOUT=groupname remote:从https://rubygems.org/
获取 gem 元数据........ 远程:安装rake(10.4.2) 远程:安装i18n(0.6.11) 远程:安装json(1.8.1) 远程:安装minitest(5.5.0)
远程:安装thread_safe(0.3.4)
远程:安装tzinfo(1.2.2)
远程:安装activesupport(4.1.1)
远程:安装builder(3.2.2)
远程:安装erubis(2.7.0)
远程:安装actionview( 4.1.1)
远程:安装机架(1.5.2)
远程:安装机架测试(0.6.2)
远程:安装actionpack(4.1.1)
远程:安装mime-types(1.25.1)
远程:安装多语言(0.3 .5)
远程:安装树顶(1.4.15)
远程:安装邮件(2.5.4)
远程:安装actionmailer(4.1.1)
远程:安装activemodel(4.1.1)
远程:安装arel(5.0.1.20140414130214)
远程:安装activerecord(4.1.1)
远程:安装execjs(2.2.2)
远程:安装autoprefixer-rails(4.0.2.1)
远程:安装sass(3.2.19)
远程:安装bootstrap-sass(3.3.1.0)
远程:安装bootstrap_form(2.2.0)
远程:安装子进程(0.5.5)
远程:安装咖啡脚本源(1.8.0)
远程:安装咖啡脚本(2.3.0)
远程:安装雷神(0.19.1)
远程:安装 railties (4.1.1)
远程:安装 coffee-rails (4.0.1)
远程:安装远足 (1.2.3)
远程:安装 multi_xml (0.5.5)
远程:安装 httparty (0.13.3)
远程:安装 multi_json (1.10.1)
远程:安装 jbuilder (2.2.5)
远程:安装 jquery-rails (3.1.2)
远程:安装 mysql2 (0.3.17)
远程:使用捆绑器 (1.3.5)
远程:安装倾斜(1.4.1)
遥控器:安装链轮(2.11.0)
遥控器:安装链轮导轨(2.2.2)
遥控器:安装导轨(4.1.1)
遥控器:安装rdoc(4.2.0)
遥控器:安装rubyzip(0.9 ) .9)
远程:安装 sass-rails (4.0.5)
远程:安装 sdoc (0.4.1)
远程:安装 websocket (1.0.7)
远程:安装 selenium-webdriver (2.35.1)
远程:安装 turbolinks (2.5. 3)
远程:安装 uglifier (2.6.0)
远程:安装 validates_cpf_cnpj (0.2.0)
远程:冻结时无法写入更改的锁定文件。
远程:您的捆绑包已完成!
远程:它已安装到 ./vendor/bundle
远程:来自 httparty 的安装后消息:
远程:当您使用 HTTParty 时,您必须全力以赴!
远程:来自 rdoc 的安装后消息:
远程:根据您的 ruby 版本,您可能需要安装 ruby rdoc/ri 数据:
远程:
远程:<= 1.8.6:不支持
远程:= 1.8.7:gem install rdoc -数据; rdoc-data --install
remote: = 1.9.1 : gem install rdoc-data; rdoc-data --install
remote: >= 1.9.2 : 无事可做!耶!
远程:准备构建以进行部署
显然错误是因为没有安装 gem 文件,但问题是为什么?
ruby-on-rails - 安装 bcrypt gem 失败
使用来自 OP 的附加信息进行编辑: