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.

War es hilfreich?

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 /

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top