java 和 phpseclib、RSA 和 OAEP?

标签 java php phpseclib

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

当我在 Java 中使用 RSA/ECB/PKCS1Padding 和在 phpseclib 中使用 setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1) 时,效果非常好。

以下是 Java 中支持的密码:http://download.oracle.com/javase/6/docs/technotes/guides/security/SunProviders.html#SunJCEProvider

这些密码都不与 phpseclib 的 OAEP 实现兼容吗?

最佳答案

问题在于所用按键的大小,也让我困惑了一段时间。

要安全地使用 OAEP,您必须使用 >=2048 位 RSA key 。

另外,请确保你运行

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

在 PHP 端的 setEncryptionMode() 之前。

编辑:即使使用 sha256,1024 个 key 似乎也无法正常工作,因此我修改了我的答案,仅包含安全的 2048+ 位路由。

关于java 和 phpseclib、RSA 和 OAEP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7527414/

相关文章:

javascript - 使用本地存储保存和加载输入值?

php - 通过 wp_handle_upload 删除未放入上传文件夹的图像

php - 如何使用 phpseclib 复制或移动远程文件?

php - 通过 PHP (phpseclib) 上传文件到 SFTP 服务器

php - 将文件上传到 SFTP 服务器

java - 如何让对象访问其调用对象的变量并修改它们?

java - 切入点不适用于 Spring AOP

java - Spark 2.0.0 : Read from Cassandra in Cluster mode

php - mysql中如何连接表中的字段

java - Android 以编程方式添加 View 重复索引