在PHP中获取C#生成的公钥时出错

时间:2017-05-02 22:26:14

标签: c# php openssl public-key

我使用C#中的以下代码创建了公钥:

using (var rsa = new RSACryptoServiceProvider(2048))
{
    rsa.PersistKeyInCsp = false;
    m_publicKey = rsa.ExportParameters(false);
}

使用here中的代码将公钥导出到文件中。

输出文件如下所示:

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA498EWxuZK/KsUgIEusEt
QOJulgTHwb8C4avtzJnzhosTeKooXvyGFPpex6HcQGSRqrWpNr2yhw1BvJvH2UyE
Jisl5BJA5Za+ofmbGifCFwCllZ37U1YpOmqpB2Yt+yYElGh5dp+lqs5Q3u3nPknd
nLS3bxH7qlZBvR9YPWj9x7IuSXJyopAmdJato8xeNHzmBxWD8FgQKICFpLtGsPXq
XRwT0imTs6/EcMqq6fdlp0OyBKyZjw6t47gMeqiuSYz6k41Nf/SbtIC4snUyoUgI
TvnHjWe1cY7js4kY62A9ZpHX0NpG7JXctxVb+aZOv1rS36bUjcP+bug1W3ZKrTG6
hwIDAQAB
-----END PUBLIC KEY-----

在服务器端,我需要读取密钥文件并使用PHP进行加密/解密。我的PHP代码如下:

$pub_key = file_get_contents("../user_pub_key.crt");
$public_key = openssl_pkey_get_public($pub_key);
var_dump($public_key);
echo openssl_error_string();

虽然显然创建了$ public_key,并且var_dump返回了它的资源编号:

resource(5) of type (OpenSSL key)

但奇怪的是,openssl_error_string()也显示以下错误:

error:0906D06C:PEM routines:PEM_read_bio:no start line

我花了几个小时寻找解决方案。我在herehereherehere以及更多链接中尝试了有关行尾字符,编码等的建议。

可能与此问题相关的唯一建议是herehere,但这些解决方案似乎适用于Windows系统而非Mac OS,因此我无法尝试使用它们。非常感谢您对此的帮助。

P.S。所有的开发和服务器都在Mac上(不是Windows)。

0 个答案:

没有答案