我正在构建一个 Rails 应用程序,在其中将哈希序列化为 JSON,然后使用 gem crypt19 和河豚算法对哈希进行编码。我正在使用 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)
我将 encrypted_thingy 分配给模型中的一个值(这是一个字符串),
@my_model.string_thing=encrypted_thingy
@my_model.save
但是当我保存模型时,它会在保存模型的位置引发参数错误异常。
invalid byte sequence in US-ASCII
(当我为它分配一个普通的旧字符串 @my_model="xxxxxxxx" 时,一切正常。
我最终的计划是通过模型将 encrypted_thingy 存储在数据库中,然后对其进行解密,解析出 JSON,并获取“thing”和“thang”的值。
搜索 'net 建议我需要更改编码,但不清楚我如何使用 crypt19/blowfish 编码的结果来做到这一点。
有没有办法像我存储的任何其他字符串一样将此加密字符串存储为字符串?
或者有没有办法应用一些魔法(以及可逆魔法)将那个时髦的字符串变成我可以在电子邮件中传递的真实字符串?