Я создаю приложение 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)
Я назначаю encrypted_thingy значению в модели (которое является строкой),
@my_model.string_thing=encrypted_thingy
@my_model.save
но когда я сохраняю модель, она выдает исключение Argument Error, где модель сохраняется.
invalid byte sequence in US-ASCII
(И когда я назначаю ей простую старую строку, @ my_model = "xxxxxxxx", все работает отлично.
Мой конечный план - сохранить encrypted_thingy в базе данных через модель, а затем расшифровать ее, проанализировать JSON и получить значения для "thing" и "Thang".
Поиск в сети предположил, что мне нужно изменить кодировку, но не ясно, как мне это сделать с результатом кодирования crypt19 / blowfish.
Есть ли способ сохранить эту зашифрованную строку как строку, как и любую другую строку, которую я храню?
Или есть способ применить магию (вместе с обратимой магией), чтобы превратить эту классную строку в настоящую строку, которую я могу передать по электронной почте?