Rails 3 & Encrypted Strings Gem - получение OpenSSL:: Cipher:: CipherError: ошибка с плохим расшифрованием

Я использую рельсы 3.2, Ruby 1.9.3 и камень encrypted_strings, когда попробуйте следующее:

"wC6234sdf234234cCY1Lag==\n".decrypt(:symmetric, :key => "mykeynottelling")

Я получаю эту ошибку:

OpenSSL::Cipher::CipherError: bad decrypt

Это не происходит с Ruby 1.8.7. Я немного потерял это, кто-нибудь видит, что может быть причиной этого?

ОБНОВЛЕНИЕ 1:

Если я зашифрую строку в ruby ​​1.8.7:

"password".encrypt(:symmetric, :key => "www.buyandsell.ie") # output is "hr0aZUZTa7x1gQL8ZMI/dQ==\n"

и попытайтесь расшифровать это в ruby ​​1.9.2. Я получаю ошибку "плохой расшифровки", но я, если вставляю ее в консоль IRB в ruby ​​1.8.7 и пытаюсь ее расшифровать, он работает.

Обновление 2:

OpenSSL отличается между моими рубинами 1.9.3 и 1.8.7, может ли это вызвать эту ошибку?

Ответ 1

У меня была аналогичная проблема обновления с 1.9.3 до 2.2.2, посвященная Symmetric Encryption. Основной причиной стало то, что в камне использовалась библиотека маршалинга Ruby, которая изменилась между версиями.

В конечном итоге мне пришлось расшифровать все данные в 1.9.3 до обновления до 2.2.2, что оказалось жалким опытом.

Из docs,

Маршализированные данные содержат основные и младшие номера версий, сохраненные вместе с информацией об объекте. При нормальном использовании маршалинг может загружать только данные, написанные с тем же самым основным номером версии, и с равным или меньшим номером младшей версии.