2011-08-02 10 views
0

に問題私はJSONへのハッシュをシリアル化のRailsアプリを構築し、その後、宝石のcrypt19とフグのアルゴリズムを使用してハッシュをエンコードしています。私はRails 3.0.9、Ruby 1.9.2 p180、最新のcrypt19 v1.2.1を使用しています。私はWindows7上で開発しています。私のRailsのコントローラでは、私が行いますルビー1.9:宝石crypt19:blowfish.encrypt_string:エンコーディング

require 'crypt/blowfish' 
h=Hash.new 
h["thing"]="12345" 
h["thang"]="abcdefghijklmnopqrstuvwxyz" 

blowfish=Crypt::Blowfish.new("SECRET") 

encrypted_thingy=blowfish.encrypt_string(h.to_json) 

は私が

@my_model.string_thing=encrypted_thingy 
@my_model.save 

、(文字列です)モデルの値にencrypted_thingyを割り当てるが、私はモデルを保存するときには、引数エラー例外がスローされますモデルが保存されます。

invalid byte sequence in US-ASCII 

(私はそれを、@ my_model =「XXXXXXXX」を、昔ながらの文字列を割り当てるときに、すべての作品罰金。

私の最終的な計画は、後に、モデルを介してデータベースにencrypted_thingy格納することで、それを解読し、JSONを解析し、 "thing"と "thang"の値を取得します。

「ネット」を検索すると、エンコードを変更する必要があることが示唆されていますが、 crypt19 /フグエンコーディング。

はSTORする方法はありますeこの暗号化された文字列を他の文字列と同じように格納しますか?

または私は電子メールの周り渡すことができ、実際の文字列にそのファンキーな文字列をオンにする(可逆魔法と一緒に)いくつかの魔法を適用する方法はありますか?

+0

は、エンコードを混在させているようです。あなたのルビーファイルにマジック#encodingヘッダを設定しようとする – phoet

答えて

2

私はそれを動作させることができました。奇妙なエンコーディングを持つバイナリのものをバイト文字列に変換する "hex_string"という宝石があります。

は、まず私は、コードがこの

require 'crypt/blowfish' 
require 'hex_string' 
h=Hash.new 
h["thing"]="12345" 
h["thang"]="abcdefghijklmnopqrstuvwxyz" 

blowfish=Crypt::Blowfish.new("SECRET") 

encrypted_thingy=blowfish.encrypt_string(h.to_json).to_hex_string.split(" ").join 

「encrypted_thingy」のように見えた後

gem install hex_string 

をしなければならなかった、今私は、私のWebアプリで簡単に周りの店を渡すことができ、文字列文字エンコーディングなどを気にすることなくデータベース、デバッグなどを行うことができます。

この処理を元に戻すために、私はこれを行いました:

decrypted_string= blowfish.decrypt_string(encrypted_thingy.to_byte_string) 

復号化された文字列は、元のハッシュのデータを抽出するためにJSON-構文解析することができます。

関連する問題