0

我正在使用 phpseclib 在 Java 中加密Cipher.getInstance("RSA/ECB/OAEPWITHSHA-512ANDMGF1PADDING")setEncryptionMode(CRYPT_RSA_ENCRYPTION_OAEP)但 phpseclib 没有正确解密数据。

当我RSA/ECB/PKCS1Padding在 Java 和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() 之前。

编辑:似乎 1024 键即使使用 sha256 也无法正常工作,所以我修改了我的答案,只包括安全的 2048+ 位路由。

于 2011-12-09T13:01:06.020 回答
0

你可能不得不做 $rsa->setHash('sha512'); 默认情况下使用 sha1。

于 2011-09-29T15:26:20.707 回答