3

暗号化のためにブロックをパディングするときに OpenSSL::Cipher が使用するパディング スキームは何ですか? ドキュメントがあいまいです。

http://www.ruby-doc.org/stdlib-1.9.3/libdoc/openssl/rdoc/OpenSSL/Cipher.html#method-i-padding-3D

暗号化されたデータを別の言語で使用する必要があります。パディングには多くの種類があることを知っています。

https://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#パディング

4

3 に答える 3

4

最初のリンクは次のようにアドバイスします

詳細については、EVP_CIPHER_CTX_set_padding を参照してください。

このページは次のことを示しています(強調は私のものです):

パディングが有効 (デフォルト) の場合、EVP_EncryptFinal_ex() は「最終」データ、つまり部分ブロックに残るデータを暗号化します。標準のブロック パディング (別名 PKCS パディング) を使用します。暗号化された最終データは、1 つの暗号ブロックに十分なスペースがあるはずの外部に書き込まれます。書き込まれたバイト数は outl に配置されます。この関数が呼び出された後、暗号化操作は終了し、EVP_EncryptUpdate() へのそれ以上の呼び出しは行われません。

このページには、役立つ追加情報へのリンクも含まれています

于 2013-07-25T23:50:52.353 に答える
3

NoPadding復号化メソッドに設定してメッセージを復号化することで、どのパディングが使用されているかを確認できます。これは、実際のメッセージの一部であるかのように、パディングを通過します。メッセージの最後のブロックのバイト数を見てください。これにより、送信者が使用しているパディングのタイプがわかります。次に、そのタイプのパディングを期待するように復号化関数を設定します。

于 2013-07-26T13:43:23.907 に答える