最近公司項目中有需要用到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加密問題的小經驗,大家還有問題的話在下方留言討論吧。
【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。