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,
Маршализированные данные содержат основные и младшие номера версий, сохраненные вместе с информацией об объекте. При нормальном использовании маршалинг может загружать только данные, написанные с тем же самым основным номером версии, и с равным или меньшим номером младшей версии.