/ / NotImplementedError:このマシンではpbkdf2_hmac()関数は実装されていません-ruby-on-rails、ruby-on-rails-3、ruby-on-rails-4、heroku

NotImplementedError:このマシンでは、pbkdf2_hmac()関数が実装されていません - ruby​​-on-rails、ruby-on-rails-3、ruby-on-rails-4、heroku

ルビーとレールのバージョンをアプリにアップグレードする作業をしています。私はレール3.2とルビー「1.9.3」を使用していました、このバージョンでは Gibberish herokuで正常に動作します。 Rails 4.2とRuby 2.2.0をアップグレードした後、Gibberishが動作せず、エラーが発生しました heroku.

そのため、私はherokuで新しいアプリを作成し、4を構成しました。2および2.2.0をテストしました。そこで、Gibberishはエラーなしで正常に動作します。しかし、「新しいアプリを設定するのは好きではありません。既存のアプリを適切に設定しているためです。見逃した点はありますか?ここにトレース...

irb(main):002:0> Gibberish::AES.new("12345").encrypt("data")
NotImplementedError: pbkdf2_hmac() function is unimplemented on this machine
from /app/vendor/bundle/ruby/2.2.0/gems/gibberish-2.0.0/lib/gibberish/aes.rb:140:in `pbkdf2_hmac"
from /app/vendor/bundle/ruby/2.2.0/gems/gibberish-2.0.0/lib/gibberish/aes.rb:140:in `encrypt"
from /app/vendor/bundle/ruby/2.2.0/gems/gibberish-2.0.0/lib/gibberish/aes.rb:100:in `encrypt"
from (irb):2
from /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/commands/console.rb:110:in `start"
from /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/commands/console.rb:9:in `start"
from /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:68:in `console"
from /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:39:in `run_command!"
from /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/commands.rb:17:in `<top (required)>"
from bin/rails:10:in `require"
from bin/rails:10:in `<main>"

注:私は最新バージョンで作業しています Gibberish

前もって感謝します!

回答:

回答№1は0

Prior to Gibberish 2.0, the default encryption mode was CBC. But now not!.

を確認した後、解決策を見つけました暗号化の形式。現在、GibberishはOpenSSLバージョンに基づいて動作しています。 Gibberish 2はOpenSSlの最新バージョンで動作します。古いバージョンのsslを使用したい場合は、以下を行う必要があります。 CBC.

Gibberish::AES::CBC.new("12345").encrypt("data")

Gibberish 1.4は生成します

Gibberish::AES.new("p4ssw0rd").enc("Some top secret data")
#=> U2FsdGVkX187oKRbgDkUcMKaFfB5RsXQj/X4mc8X3lsUVgwb4+S55LQo6f6NnIDMX

しかし今では、CBCはこのフォーマットされた出力を生成します。

herokuでopensslを更新することをお勧めします。