Techioz Blog

Java Bouncy Castle AES-128-CBC パディングと同等の Ruby

概要

PKS#5 パディングとデフォルトの初期化ベクトルを備えた AES 128 ビット CBC を使用して Java Bouncy Castle を使用してエンコードされたメッセージを復号化する Ruby コードを作成しています。

私は Ruby Open::SSL をデフォルトのパディング (明らかに PKS#5) で使用しています。短いメッセージは解読できますが、長いメッセージは解読できません。

デバッグのために、Java Bouncy Castle が暗号化しているのと同じメッセージを Ruby Open::SSL を使用して暗号化しました。最初の文字ブロックは #final に追加されるものまでまったく同じであることがわかります。

ですので、使用されているパッドの違いがあるのではないかと思います。ただし、Ruby と Bouncy Castle の両方のデフォルトのパディングは PKS#5 です。 Ruby では、マニュアルの「詳細については EVP_CIPHER_CTX_set_padding を参照してください。」という謎めいた (暗号化なので適切な) コメントを除いて、パディングを変更する方法はないようです。 EVP_CIPHER_CTX_set_padding のエントリはなく、グーグルで検索しても、何をいつ設定するかについては手がかりがありません。

Java Bouncy Castle で何かを暗号化し、Ruby で復号化できた人はいますか?

解決策

グーグルの作品: https://www.openssl.org/docs/manmaster/man3/EVP_CIPHER_CTX_set_padding.html

デフォルト以外のパディングを選択することはできません (おそらく PKCS#7 ソース)

C# のようなオプションはありません。