Blowfishでエンコードされたバイナリ文字列をRubyでASCIIに変換するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/808536

  •  03-07-2019
  •  | 
  •  

質問

Rubyと暗号化ライブラリを使用して、プレーンテキストをエンコードしたいと思います。次に、この暗号化されたテキストを(他のデータと一緒に)XMLファイル内のASCII 16進数文字列として送信したいと思います。

次のコードスニペットがあります:

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

出力:

This is the plain text
????;

enc.unpack()を呼び出す必要があると思いますが、unpackメソッド呼び出しに必要なパラメーターがわかりません。

役に立ちましたか?

解決

「ASCII 16進数」と言うとき単に読み取り可能なASCIIである必要があるだけですか、それとも厳密に16進数である必要があるということですか?

バイナリデータをエンコードする方法は2つあります:

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=

他のヒント

decrypt_string とそれに対応する encrypt_string を使用すると、かなり簡単に出力されます。 :)


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)

また、参照用に追加されたCryptライブラリを使用した速度の問題について説明しているこのブログ投稿も見つけました。 :)
http://basic70tech.wordpress.com/2007/03/09/blowfish-decryption-in- ruby /

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top