最近在开发百度小程序,他的平台公钥是纯字符串,公钥的内容,没有rsa文件的头(—–BEGIN PUBLIC KEY—–)和尾部分—–END PUBLIC KEY—–
但是 PHP函数 openssl_verify 是要接受 如下格式的公钥内容的
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNA6DCBiQKBgQCwbR2M2efjbuttNoeCjE19ZBqA
z3Q2BWxdNeQfC7v3434344OI54JB28H5DX1H44CFRgodYn6oLzI4zh3kG2XqwAOGf4
FOZlkD1nkDhlY8od4mUJvEr1XwSz+V2W0aNyONBe29NdWScMQlTxhxf15NaHHSM1l
RkiOOOhNXgLLXOXF4QID3AQAB
-----END PUBLIC KEY-----
2、解决办法
使用 wordwrap 函数进行固定长度换行处理,头尾连接对应的 —–BEGIN PUBLIC KEY—– 和 —–END PUBLIC KEY—–
代码如下:
$publickey = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYwzcpD6YQQu3ddK147cjBZoqRupP56FJIH2Rr8ShLawh1fbmHRHbrtfKsPE7jJS6UXEI0LncqUydbVKnOt9q1Dt+W8mEXZxzArmv5NuaHI7+Rx2ehphk913bR531CPm/+nUfLQN/9JT+2MVLMRMQ5P2b3fH+8h+ndvKhHQGetXwIDAQAB';
$publickey = "-----BEGIN PUBLIC KEY-----\n" .
wordwrap($publickey, 64, "\n", true)
. "\n-----END PUBLIC KEY-----";
最终返回的就是拼接好并且按照格式换行的内容了