最近在開發百度小程序,他的平台公鑰是純字符串,公鑰的內容,沒有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-----";
最終返回的就是拼接好並且按照格式換行的內容了