最近公司專案中有需要用到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, "
"));
}
return false;
}
加頭尾的方法:
function appendFlags($content, $isPublic = true) {
if ($isPublic) {
return "-----BEGIN PUBLIC KEY-----
" . $content . "
-----END PUBLIC KEY-----
";
}
else {
return "-----BEGIN PRIVATE KEY-----
" . $content . "
-----END PRIVATE KEY-----
";
}
}
只有踩了坑才會知道有很多東西還是要學習的啊