Domanda

Vorrei codificare del testo in chiaro usando Ruby e la Crypt library . Vorrei quindi trasmettere questo testo crittografato (insieme ad alcuni altri dati) come una stringa esadecimale ASCII all'interno di un file XML.

Ho il seguente frammento di codice:

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

Quali output:

This is the plain text
????;

Credo di dover chiamare enc.unpack () ma non sono sicuro di quali parametri siano richiesti per la chiamata del metodo di decompressione.

È stato utile?

Soluzione

Quando dici " ASCII esadecimale " vuoi dire che deve semplicemente essere ASCII leggibile o deve essere rigorosamente esadecimale?

Ecco due approcci per codificare i dati binari:

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=

Altri suggerimenti

Se usi decrypt_string e la sua controparte encrypt_string , lo emette abbastanza facilmente. :)


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)

Ho anche trovato questo post sul blog che parla di problemi di velocità usando la libreria Crypt, aggiunto solo per riferimento. :)
http://basic70tech.wordpress.com/2007/03/09/blowfish-decryption-in- ruby /

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top