【发布时间】:2015-08-20 14:50:52
【问题描述】:
我有一个案例,一个“秘密”从 Java 应用程序传给我,它是使用公钥和 RSA/ECB/OAEPWITHSHA-256ANDMGF1PADDING 密码加密的。我试图在我的最后破译它,但我不确定如何获得与该密码相同的东西。我一直在使用 phpseclib 来处理其他安全问题,并且我已经尝试过 OAEP 加密模式,但无济于事。我只是得到一个没有信息的解密错误。我只想声明密钥是正确的:
function oaes_decrypt($ciphertext, $privatekey) {
$rsa = new \Crypt_RSA();
$rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_OAEP);
$rsa->setMGFHash('sha256');
$rsa->setHash('sha256');
$rsa->loadKey($privatekey);
return $rsa->decrypt($ciphertext);
}
任何帮助将不胜感激!谢谢!
【问题讨论】:
-
secure.php.net/manual/en/function.openssl-private-decrypt.php 这似乎是最有可能的候选人,尽管
OPENSSL_PKCS1_OAEP_PADDING似乎并不那么具体。我不知道你是否可以这样做;您是否考虑过使用 libsodium 代替?crypto_box_seal()和crypto_box_seal_open()适用于此用例。 -
谢谢斯科特。我将使用 OPENSSL_PKCS1_OAEP_PADDING 尝试 PHP 的 open ssl 方法,看看它是否有效。如果做不到这一点,我会看看github.com/jedisct1/libsodium-php。
-
openssl_private_decrypt() 不起作用。会让你知道我如何使用 libsodium。
-
遗憾的是,我将不得不在 Windows 上执行此操作。任何人都知道如何在没有 Vsual Studio 的情况下让 libsodium 在 Windows 上运行?
标签: java php encryption rsa phpseclib