5

Rubyを使用してテキストを暗号化する必要があります。私はその目的のためにRuby-Opensslgemを使用しました。この暗号化されたテキストは、Pythonプログラムに渡され、それを使用して復号化する必要があります。私はその目的のためにPycryptoを使用しました。

問題は、Pycryptoではパディング規則を手動で指定する必要があることです。Rubyでは、パディングは自動的に行われます。AES-CBCブロック暗号モードを使用しています。このパディングは、Pythonでストリッピングを適切に実行できないため、問題を引き起こします。例として、これらはRubyとPythonの両方で暗号化されたテキストのbase64エンコーディングです。

Python: aENJY28lvE89yY2T/te8vWwdeoeSqSwwlrOAv7b3AWw=
Ruby:   aENJY28lvE89yY2T/te8vVoQE6JNxdSRgYXC8mqF3nI=

助けてください...

4

2 に答える 2

3

OpenSSLはデフォルトでPKCS#5Paddingを適用するため、これはOpenSSL::CipherAES-CBCモードでデータを暗号化するときにも自動的に使用されます(OpenSSLドキュメントを参照)。したがって、Rubyを使用するときに手動でパディングを実行する必要はありません。

PyCryptoを使用する場合、Pythonでパディングを手動で行う必要があります。

Pythonでこのパディングスキームを適用すると、暗号化された両方のBase64文字列が一致するはずです。

于 2011-08-11T08:44:13.500 に答える
0

どちらの場合も使用するには、正しいパディングモードを指定する必要があるようです。パディングは暗号ストリームの基本的なプロパティであり、受信者と送信者の両方で一致する必要があります。

于 2011-08-11T06:11:25.217 に答える