PHP openssl_解密数据


PHP openssl_ Decrypting data

我有一种情况,我从供应商那里收到一些加密数据,我需要解码。

在base64编码并作为POST变量传输到我的服务器之前,数据已经用我的公钥加密并与供应商私有签名。-我控制不了。要了解更多信息,供应商运行的是。net系统,而我们的系统是linux发行版。

我在获得这个数据解密有很多困难,所以任何帮助将非常感激。我被告知,我可以"简单地"解码base64之后的解码数据,通过使用我的私钥和供应商的公钥。

我现在的代码看起来像这样

$data = base64_decode($_POST['encryptedData']);
$public     = openssl_get_publickey('/path/vendors/public/key.cer');
$private    = openssl_get_privatekey('/path/to/my/private/key.key');
$env_key = $public;
if (openssl_open($data, $open, $env_key, $private)) {
    echo "here is the opened data: ", $open;
} else {
    echo "failed to open data";
}

我熟悉PHP,但从未使用过openssl库之前

它实际上来自SSO类型的应用程序,但我不认为我需要实现phpSAMP等,因为我需要做的只是解密发送给我的数据(断言)

我也有点不确定我使用的公钥和私钥是否100%正确。当我看到我的公钥时,它更像是私钥的样子,而不是十六进制格式。

我的私钥看起来像:

-----BEGIN RSA PRIVATE KEY-----
FRt6SFwIBAAKCAQEAn2D2XXXXXsfdsSDFSDF534MR/5Efsfs4OWNTtc34yYgO1cu
2GYh07MOZnrz5VsDJg8iacB1B3FAA0qrNLFuU8BEnLYDk36zyDurJwkBfCFc1MHq
lIfhUT9/bT/5naQGQ29dJZuXsfdsSDFSDF534MR/5Efsfshpf0qWArj5qBJduVc+
....truncated
-----END RSA PRIVATE KEY-----

和公钥看起来像:

0ad2 ca15 c2d3 5e82 b9a4 ae81 6898 b9bf
cef6 a464 e382 b897 1755 956c 79df fe15
3a44 8c75 47bf 8a54 375f d611 c4ec 551c
...... More Data
724e 536d c437 0383 66ca c998 a357 4e1a
f7ad bdf0 cc13 2152 354b f8

我在互联网上好好看看,找不到任何针对这个特定问题的工作示例。

如果它是加密的,然后签名,并假设CMS格式(前pkcs# 7)那么我猜你需要先验证它,检索内容(检查功能),然后解密。