0

Ruby とCrypt ライブラリを使用してプレーン テキストをエンコードしたいと考えています。次に、この暗号化されたテキストを (他のデータと共に) 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

どの出力:

これはプレーンテキストです
??????;

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

4

2 に答える 2

0

「ASCII16進数」とは、単に読み取り可能な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=
于 2009-05-01T15:30:20.937 に答える
0

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/

于 2009-04-30T19:20:46.273 に答える