PHP openssl_解密数据

时间:2014-06-12 20:22:41

标签: php encryption openssl php-openssl

我遇到的情况是,我需要从供应商处发送一些加密数据,我需要解码。

数据已使用我的公钥加密,并在与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

我对互联网有一个很好的了解,找不到任何有关此特定问题的工作示例。

提前致谢。

1 个答案:

答案 0 :(得分:0)

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