0

Cipher.getInstance("RSA/ECB/OAEPWITHSHA-512ANDMGF1PADDING")phpseclib を使用して Java で暗号化していますsetEncryptionMode(CRYPT_RSA_ENCRYPTION_OAEP)が、phpseclib がデータを正しく復号化していません。

RSA/ECB/PKCS1PaddingJava とsetEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1)phpseclibで使用すると、完全に機能しました。

Java でサポートされている暗号は次のとおりです。http://download.oracle.com/javase/6/docs/technotes/guides/security/SunProviders.html#SunJCEProvider

これらの暗号はどれも phpseclib の OAEP 実装と互換性がありませんか?

4

2 に答える 2

2

問題は使用するキーのサイズにあり、私もしばらく戸惑いました。

OAEP を安全に使用するには、2048 ビット以上の RSA キーを使用する必要があります。

また、必ず実行してください

$rsa->setHash('sha512');
$rsa->setMGFHash('sha512');

PHP 側の setEncryptionMode() の前。

編集:sha256でも1024キーは正しく機能しないようですので、安全な2048ビット以上のルートのみを含めるように回答を修正しました。

于 2011-12-09T13:01:06.020 に答える
0

おそらく $rsa->setHash('sha512'); を実行する必要があります。デフォルトでは sha1 が使用されます。

于 2011-09-29T15:26:20.707 に答える