Rails 3&加密字符串Gem - 获取OpenSSL :: Cipher :: CipherError:错误的解密错误

时间:2013-06-13 18:42:27

标签: ruby-on-rails ruby

我在尝试以下操作时使用rails 3.2,Ruby 1.9.3和encrypted_strings gem:

"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中解密它我得到了一个“糟糕的解密”错误,但我如果将它粘贴到ruby 1.8.7中的IRB控制台并试图解密它,它的工作原理。

更新2:

OpenSSL在我的ruby 1.9.3和1.8.7框之间有所不同,这会导致此错误吗?

1 个答案:

答案 0 :(得分:0)

我有一个类似的问题,从1.9.3升级到2.2.2处理Symmetric Encryption gem。根本原因最终是gem使用了Ruby的编组库,它在版本之间发生了变化。

在升级到2.2.2之前,我最终必须解密1.9.3中的所有数据,这被证明是一种悲惨的经历。

来自docs

  

编组数据具有与对象信息一起存储的主要和次要版本号。在正常使用中,编组只能加载使用相同主版本号和相同或较低版本号编写的数据。