Question

J'aimerais encoder du texte brut à l'aide de Ruby et de la bibliothèque de cryptage . Je voudrais ensuite transmettre ce texte crypté (avec quelques autres données) sous forme de chaîne hexadécimale ASCII dans un fichier XML.

J'ai l'extrait de code suivant:

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

Quelles sorties:

This is the plain text
????;

Je crois que j'ai besoin d'appeler enc.unpack () mais je ne suis pas sûr des paramètres requis pour l'appel de la méthode de décompression.

Était-ce utile?

La solution

Lorsque vous dites "hexadécimal ASCII" voulez-vous dire qu'il doit simplement être lisible en ASCII ou doit-il être strictement hexadécimal?

Voici deux approches pour coder des données binaires:

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=

Autres conseils

Si vous utilisez decrypt_string et son homologue encrypt_string , il le sort assez facilement. :)


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)

Nous avons également trouvé cet article de blog qui traite de problèmes de rapidité d'utilisation de la bibliothèque Crypt, ajouté juste pour référence. :)
http://basic70tech.wordpress.com/2007/03/09/blowfish-decryption-in- rubis /

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top