public function signContentWithRSA($content, $privateKey, $alg = OPENSSL_ALGO_SHA1) { $privateKey = $this->prefix($privateKey); $privateKey = $this->format($privateKey, self::KEY_TYPE_PRIVATE); $res = openssl_pkey_get_private($privateKey); $sign = null; try { openssl_sign($content, $sign, $res, $alg); } catch (Exception $e) { if ($e->getCode() == 2) { $message = $e->getMessage(); $message .= "\n应用私钥格式有误,见 https://github.com/lokielse/omnipay-alipay/wiki/FAQs"; throw new Exception($message, $e->getCode(), $e); } } openssl_free_key($res); $sign = base64_encode($sign); return $sign; }