最近公司項目中有需要用到OpenSSL的加密和java端進行接口驗證,再測試環境升級到PHP7的時候加密會出現錯誤,后來多方面檢查終于找到原因所在:
PHP7環境下把openssl_get_privatekey方法換成openssl_pkey_get_private
需要轉換一下秘鑰,window環境和Linux環境下的秘鑰格式有區別(暫時不確定是不是操作系統的關系)
PHP的秘鑰驗證需要加上頭尾。
這里貼上附屬方法
轉換秘鑰格式的方法:
function transJavaRsaKeyToPhpOpenSSL($content) { if ($content) { return trim(chunk_split($content, 64, "/n")); } return false; }
加頭尾的方法:
function appendFlags($content, $isPublic = true) { if ($isPublic) { return "-----BEGIN PUBLIC KEY-----/n" . $content . "/n-----END PUBLIC KEY-----/n"; } else { return "-----BEGIN PRIVATE KEY-----/n" . $content . "/n-----END PRIVATE KEY-----/n"; } }
以上就是本次遇到OPENSSL加密問題的小經驗,大家還有問題的話在下方留言討論吧。
新聞熱點
疑難解答
圖片精選