Ruby on rails 3 Ruby 1.9:gem crypt19:blowfish.encrypt\u字符串:编码有问题

Ruby on rails 3 Ruby 1.9:gem crypt19:blowfish.encrypt\u字符串:编码有问题,ruby-on-rails-3,character-encoding,blowfish,Ruby On Rails 3,Character Encoding,Blowfish,我正在构建一个Rails应用程序,其中我将哈希序列化为JSON,然后使用gem crypt19和blowfish算法对哈希进行编码。我正在使用Rails 3.0.9、Ruby 1.9.2 p180、最新的crypt19 v1.2.1,我正在Windows7上开发。在Rails控制器中,我执行以下操作: require 'crypt/blowfish' h=Hash.new h["thing"]="12345" h["thang"]="abcdefghijklmnopqrstuvwxyz" bl

我正在构建一个Rails应用程序,其中我将哈希序列化为JSON,然后使用gem crypt19和blowfish算法对哈希进行编码。我正在使用Rails 3.0.9、Ruby 1.9.2 p180、最新的crypt19 v1.2.1,我正在Windows7上开发。在Rails控制器中,我执行以下操作:

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)
我将加密的_thingy分配给模型中的一个值(它是一个字符串)

但是当我保存模型时,它会在保存模型的地方抛出一个参数错误异常

invalid byte sequence in US-ASCII
(当我给它分配一个普通的旧字符串@my_model=“xxxxxxxx”时,一切都正常

我最终的计划是通过模型将加密的东西存储在数据库中,然后解密它,解析出JSON,并获取“thing”和“thang”的值

搜索“net”表明我需要更改编码,但不清楚如何使用crypt19/blowfish编码的结果来更改编码

是否有任何方法可以像我存储的任何其他字符串一样将此加密字符串存储为字符串


或者有没有一种方法可以应用一些魔法(以及可逆魔法)将那个时髦的字符串变成一个我可以在电子邮件中传递的真实字符串?

我能够让它工作。有一种叫做“hex_string”的宝石,它可以将带有奇怪编码的二进制内容转换成字节字符串

首先我必须做

gem install 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
“加密的东西”现在是一个字符串,我可以在我的web应用程序中轻松地传递,存储在数据库中,调试等等,而不用担心字符编码等等

为了扭转这一过程,我做了以下工作:

decrypted_string= blowfish.decrypt_string(encrypted_thingy.to_byte_string)

然后可以对解密的字符串进行JSON解析,以提取原始哈希中的数据。

看起来您在混合编码。请尝试在ruby文件中设置magic#encoding头
decrypted_string= blowfish.decrypt_string(encrypted_thingy.to_byte_string)