Ich versuche, einige Daten zu entschlüsseln, die ich von einer API abholen und einige seltsame Fehler bekommen.NoMethodError beim Versuch, Daten mit Blowfish zu entschlüsseln
Einige Hintergrund
Die Daten Ich Abrufen wurde mit Blowfish verschlüsselt und dann in eine Base64-String codiert und hergestellt in einem JSON-String zur Verfügung. Hier ist ein Beispiel von dem, was der JSON-String sieht aus wie
{"payload":"BR0UzF38W4oVB7fjP6WgClqdaMKIYTl661mpneqoXQYIYkBQvjlMQZ+yn...."}
In meinem Ruby-Skript Ich mache folgende:
require 'crypt/blowfish'
require 'base64'
# get json data
response = Net::HTTP.get(URI('http://www.url-to-json.com'))
results = JSON.parse(response)
# decode the base64 results
decoded = Base64.decode64(results['payload'])
# setup blowfish object with key
blowfish = Crypt::Blowfish.new('my_secret_key')
# decrypt the data
puts blowfish.decrypt_string(decoded)
und das ist der Fehler, der zurückgegeben wird:
/Users/Ken/.rvm/gems/[email protected]/gems/crypt-2.2.1/lib/crypt/stringxor.rb:4:in `^': undefined method `b' for "java.uti":String (NoMethodError)
from /Users/Ken/.rvm/gems/[email protected]/gems/crypt-2.2.1/lib/crypt/cbc.rb:62:in `decrypt_stream'
from /Users/Ken/.rvm/gems/[email protected]/gems/crypt-2.2.1/lib/crypt/cbc.rb:115:in `decrypt_string'
from /Users/Ken/Code/vs/scripts/test.rb:55:in `run'
from init.rb:43:in `<main>'
Haben Sie einen Einblick, was diesen Fehler verursachen könnte? Ich habe es seit Stunden getestet und kann anscheinend keine Fortschritte machen. Meine beste Vermutung ist, dass es ein Codierungsproblem ist, aber wenn ich die Kodierung erzwinge mit force_encoding()
bekomme ich die gleichen Fehler.
Und falls Sie sich wundern, bin ich in Ruby Version 1.9.3-P327 für diese App gesperrt.
Vielen Dank im Voraus für jede Hilfe!
Sieht aus wie ein Fehler in Crypt-Juwel für mich, kann aber nicht bestätigen. Funktioniert es, wenn Sie handgemachte Daten zur Verfügung stellen? – Felix