11

以下を試すとき、私はレール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 が異なるため、このエラーが発生する可能性はありますか?

4

1 に答える 1

1

Symmetric Encryption gemを扱う 1.9.3 から 2.2.2 にアップグレードする際にも同様の問題がありました。根本的な原因は、gem がバージョン間で変更された Ruby のマーシャリング ライブラリを使用していたという事実でした。

2.2.2 にアップグレードする前に、最終的に 1.9.3 のすべてのデータを復号化する必要がありましたが、これは悲惨な経験でした。

ドキュメントから、

マーシャリングされたデータには、オブジェクト情報とともにメジャー バージョン番号とマイナー バージョン番号が格納されています。通常の使用では、マーシャリングは、メジャー バージョン番号が同じで、マイナー バージョン番号が同じかそれ以下のバージョンで書き込まれたデータのみをロードできます。

于 2015-10-22T01:21:12.423 に答える