我有一种情况,我从供应商那里收到了一些需要解码的加密数据。
数据已使用我的公钥加密并与供应商私有签名,然后进行 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
我在互联网上进行了很好的浏览,找不到任何针对此特定问题的工作示例。
提前致谢。