我有一个C#服务器,它将生成一个RSA KeyValue对.公钥将被发送到PHP客户端,然后将加密一些数据并发送到服务器.然后,服务器将使用它拥有的私钥进行解密.
我在C#中使用以下代码执行此操作 -
CspParameters cspParams = new CspParameters { ProviderType = 1 };
RSACryptoServiceProvider rsaProvider = new RSACryptoServiceProvider(1024, cspParams);
string publicKey = Convert.ToBase64String(rsaProvider.ExportCspBlob(false));
string privateKey = Convert.ToBase64String(rsaProvider.ExportCspBlob(true));
Run Code Online (Sandbox Code Playgroud)
现在我需要将生成的公钥传递给PHP客户端.但问题是,当我在下面的函数中使用它时,PHP无法识别在C#中生成的Key String -
public function encrypt($data)
{
$pubkey = 'BgIAAACkAABSU0ExAAIAAAEAAQBdZ3klDbVjH8oiBtGzHIMixo/TKPlv492kuau9chnARvkpxaRd8Qa82kIF2AvrEllhzjD07UHkVxoVZA2aYN+t'
$pubKey4 = openssl_get_publickey( $pubkey );
openssl_public_encrypt($data, $encrypted, $pubKey4 )
}
Run Code Online (Sandbox Code Playgroud)
openssl_public_encrypt() 功能显示这样的警告:
警告:openssl_public_encrypt():key参数不是C:\ wamp\www\rsa\index.php中的有效公钥
请建议,PHP应识别的公钥格式是什么.
X509证书不是一个选项.