/ / NotImplementedError: la fonction pbkdf2_hmac () n'est pas implémentée sur cette machine - ruby-on-rails, ruby-on-rails-3, ruby-on-rails-4, heroku

NotImplementedError: la fonction pbkdf2_hmac () n'est pas implémentée sur cette machine - ruby-on-rails, ruby-on-rails-3, ruby-on-rails-4, heroku

Je travaille sur la mise à niveau de la version ruby ​​et rails de mon application. J'utilisais les rails 3.2 et ruby ​​"1.9.3", pour cette version Gibberish fonctionne bien sur heroku. Après avoir mis à niveau les rails 4.2 et Ruby 2.2.0, Gibberish ne fonctionne pas et par une erreur sur heroku.

J'ai donc créé une nouvelle application dans heroku et configuré 4.2 et 2.2.0 et ensuite testé. Là, le charabia fonctionne sans erreur. Mais je n’aime pas configurer une nouvelle application. Parce que j’ai bien configuré mon application existante. Y a-t-il un point que j’ai manqué? Voici ...

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>"

Note: Je travaille sur la dernière version Gibberish

Merci d'avance!

Réponses:

0 pour la réponse № 1

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

Je suis venu la solution après avoir vérifié laformat du cryptage. Gibberish travaille maintenant sur la version OpenSSL. Gibberish 2 fonctionnera dans la dernière version sur OpenSSl. Si vous voulez travailler avec l'ancienne version de ssl, alors vous pouvez CBC.

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

Gibberish 1.4 va générer

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

mais maintenant, CBC générera cette sortie formatée.

Je recommande de mettre à jour openssl dans heroku.