【问题标题】:Rails 3 & Encrypted Strings Gem - getting OpenSSL::Cipher::CipherError: bad decrypt errorRails 3 & Encrypted Strings Gem - 获取 OpenSSL::Cipher::CipherError: bad decrypt 错误
【发布时间】:2013-06-13 18:42:26
【问题描述】:

当尝试以下操作时,我正在使用 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:

我的 ruby​​ 1.9.3 和 1.8.7 机器之间的 OpenSSL 不同,这会导致此错误吗?

【问题讨论】:

  • 删除字符串末尾的换行符。换行符不是 base-64 字符。
  • @mcfinnigan - 我试过了,但仍然收到错误的解密错误
  • 我在将基于 ruby​​ 1.8.7 运行的 rails 应用程序升级到 ruby​​ 2.2.3 时遇到了类似的问题。您是否找到任何解决该问题的方法?代码看起来一切正常,似乎是一些内部变化。如果有人知道它的原因,请告诉我,我从最近几天就被困在这个问题上。
  • 您是否使用与加密字符串相同的密钥?当加密和解密密钥不匹配时,通常会发生此错误。我尝试在 Ruby 1.8.7 中加密一个简单的字符串,并在 Ruby 1.9.3 / 2.2.2 中解密相同的字符串,没有任何问题。这可能失败的唯一原因是一个复杂的密钥,它在加密字符串时会产生编码问题。你能分享一个案例来重现这个问题吗?
  • 感谢您回复。我也怀疑与编码有关的东西,但与密钥编码无关,而是文件字节数组中的东西。我停止挖掘原因,转而使用 AWS S3 SSE。所以我提取了 Rake 任务中的所有文件,并使用 AWS:KMS 将这些文件上传到 SSE 的新位置

标签: ruby-on-rails ruby


【解决方案1】:

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

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

来自docs

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-20
    • 1970-01-01
    • 1970-01-01
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-27
    相关资源
    最近更新 更多