Wie kann ich konvertieren eine Blowfish verschlüsselt Binärkette in Ruby in ASCII?
-
03-07-2019 - |
Frage
Ich möchte einige Klartext mit Ruby kodieren und die Crypt Bibliothek . Ich möchte dann diese verschlüsselten Text übertragen (zusammen mit einigen anderen Daten) als ASCII-Hexadezimal-Zeichenfolge in einer XML-Datei.
Ich habe den folgenden Code-Snippet:
require 'rubygems'
require 'crypt/blowfish'
plain = "This is the plain text"
puts plain
blowfish = Crypt::Blowfish.new("A key up to 56 bytes long")
enc = blowfish.encrypt_block(plain)
puts enc
Welche Ausgänge:
This is the plain text ????;
Ich glaube, ich brauche enc.unpack()
zu nennen, aber ich bin nicht sicher, welche Parameter an die auspacken Methodenaufruf erforderlich sind.
Lösung
Wenn Sie „ASCII Hexadezimal“ sagen meinst du, dass es nur lesbare ASCII sein muss oder muss es streng hexadezimal sein?
Hier zwei Ansätze binäre Daten zu kodieren:
require 'rubygems'
require 'crypt/blowfish'
plain = "This is the plain text"
puts plain
blowfish = Crypt::Blowfish.new("A key up to 56 bytes long")
enc = blowfish.encrypt_string(plain)
hexed = ''
enc.each_byte { |c| hexed << '%02x' % c }
puts hexed
# => 9162f6c33729edd44f5d034fb933ec38e774460ccbcf4d451abf4a8ead32b32a
require 'base64'
mimed = Base64.encode64(enc)
puts mimed
# => kWL2wzcp7dRPXQNPuTPsOOd0RgzLz01FGr9Kjq0ysyo=
Andere Tipps
Wenn Sie decrypt_string
und sein Gegenstück verwenden encrypt_string
es gibt sie ziemlich leicht. :)
require 'rubygems'
require 'crypt/blowfish'
plain = "This is the plain text"
puts plain
blowfish = Crypt::Blowfish.new("A key up to 56 bytes long")
enc = blowfish.encrypt_string(plain)
p blowfish.decrypt_string(enc)
Auch fand diese Blogpost, die über die Geschwindigkeit Bedenken mit der Crypt-Bibliothek spricht, addierten gerade als Referenz. :)
http://basic70tech.wordpress.com/2007/03/09/blowfish-decryption-in- ruby /