class SimpleERP {

    private $_config;
    private $_domain;
    private $_private_pem="./private.pem";

    public function __construct() {
        if(version_compare(PHP_VERSION,'5.5.9','<'))  die('require PHP > 5.5.9 !');
        $this->_config = require 'config.php';
    }

    public function login() {
        $user["tokenEnc"] = $this->_config['AUTH_TOKEN_ENC'];
        $user['sign'] =$this->getSign($this->_config['AUTH_TOKEN_ENC']);
        $urlData= http_build_query($user);

        $url = $this->_config['WEB_URL'] . "system/user/loginByToken.do";
        $header=array(
            'user-agent:SIMPLE-HTTPCLIENT-RELEASED-RSA2',
            'Content-Type:application/x-www-form-urlencoded;charset=utf-8'
        );
        $res = HttpService::postRequest($url, $urlData,$header);
        var_dump($res);
    }

    private function getSign($data=""){
        $private_key= file_get_contents($this->_private_pem);
        $res= openssl_get_privatekey($private_key);
        openssl_sign($data, $sign,$res,OPENSSL_ALGO_SHA256);
        return  base64_encode($sign);
    }

}

1、php版本最好5.6  我用5.4版本同样的秘钥失败

2、加密的格式

3、加密好的签名进行base64转码获得字符串

4、url拼接http_build_query

5、header头部发送的设置 

05-07 13:37