aes,rsa加密解密
class pieceAction extends baseAction{
private public_key = “—–BEGIN PUBLIC KEY—–
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAo/fi2xqinU/MdQ6ie3sN
m8F278V7a1Y8Rwdfar/gICFkA6GVNqovqGINWQxn/nfzMTcHZazJlGfv5YhIbDfE
AqByzseibvQfbluDG/pEJsSCMoicxyaAQmSpNpFT72f+FpmHR0wrnYSNWs2fyQdt
GuqD+RIcPfiBMTQh/Cy7yOyT395CLveNFNurxffW0EJpaJCslYrBLqye76kcVOx1
Y0VPU/3PKSDQoJ3FC9DGn6zQ8bKZNmD10yW1LgJqtO2XivX7JJVKW4gJpdEmjslr
WwcVhKbbA27UX3lf+XoC1KkFLmfbVRoDo7x5DRUl28izmSFFas//WJ6GYYjzlmhq
PwIDAQAB
—–END PUBLIC KEY—–”;
private aes_key;
private other_public_key =”MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqVzL/VFmIrW4QZAtHZ+NShHdEAl+0QquI7u2ya2AMwMycHOvvLVI95gSM5oC0GEcAN1PhfotSAoeXKW1J3t0o/zMnPrFhsa486VJysHapWnv7DjDunN7i0OCJ+3Jit5DDM2CfSpot/4DSfeXY+s/szEsf1n0837q1UPlRyHzHWCZ3I79mUAQdU+7dr/mJ9XNnG0s79uUJxTfShyGqDONaTwj5Ebed5IrO7QMZWSNjMCeEYpy2xi46TFw/TImCkNM7c1q+28VwzgKIybx+YJbdXSlQuBJvzLh8hVIIPh8UvIiGe7LayKVywWj6Bq06Ts2X85G1oRN3X6GasdbLiOlUwIDAQAB”;
private method=”;
public function _initialize()
{
parent::_initialize();
if ( !function_exists( 'hex2bin' ) ) {
function hex2bin( $str ) {
$sbin = "";
$len = strlen( $str );
for ( $i = 0; $i < $len; $i += 2 ) {
$sbin .= pack( "H*", substr( $str, $i, 2 ) );
}
return $sbin;
}
}
$this->_cfg = array(
'second_url'=>'http://tapi.hrtxpay.com/router',
'pay_url' =>'http://testapi.xmkzry.com/router',
'gate_url'=>'http://api.xmkzry.com/router',
// ‘notify_url’=>’111’,//支付异步回调地址
‘app_key’=>’WQ4G6HPWE05UMU47’,//’1234567890123456’,//’WQ4G6HPWE05UMU47’,
‘app_account’=>’165080754535613288’,//’123456’,//’165080754535613288’,
‘app_secret’=>’WQ4G6HPWE05UMU47’,//’1234567890123456’,//’WQ4G6HPWE05UMU47’,
‘method’=>$this->method,
‘v’=>’1.0’,
‘format’=>’json’,
‘callBack’=>’http://csqht.hespay.com/api.php/piece/callback‘,
);
}
/**
* 生成指定长度的随机字符串(包含大写英文字母, 小写英文字母, 数字)
*/
public function random_str($length)
{
//生成一个包含 大写英文字母, 小写英文字母, 数字 的数组
$arr = array_merge(range(0, 9), range('a', 'z'), range('A', 'Z'));
$str = '';
$arr_len = count($arr);
for ($i = 0; $i < $length; $i++)
{
$rand = mt_rand(0, $arr_len-1);
$str.=$arr[$rand];
}
return $str;
}
/**
* 请求处理
* $data 请求业务数据
* $url 请求地址
* $n_sign不参与加密的参数数组
* 返回数组 应答报文数组,验签失败返回 array('errorCode'=>"9999","message"=>"验签失败")
*/
public function postData($data,$url,$n_sign,$method_name = "idCard") {
ksort($data);
$post_string = '';
foreach ($data as $key => $value) {
if ($value !== '') {
$post_string .= $key . '=' . $value . '&';
}
}
$post_string = substr($post_string, 0, -1);
//随机生成16位的aes密匙key和向量
$this->aes_key = $this->random_str(16);//'6AAeB6eA6B9FdaAd';//$this->random_str(16);
$this->key_iv = $this->random_str(16);//'FF0505949fE5DA86';//$this->random_str(16);
//aes加密
$encrypt_data = $this->encrypt($post_string,$this->aes_key,$this->key_iv); //aes加密
//组合aes的密匙和向量
$aes_string = $this->aes_key.'-'.$this->key_iv;
//用rsa公钥加密aes密匙-组合 内部包含了base64编码
$encrypt_key = $this->publicEncrypt($this->other_public_key,$aes_string);
//rsa密匙签名请求报文 内部包含了base64编码
$sign_data = $this->privateEncrypt($this->private_key,$post_string);
$this->setParameter('method',$method_name);
$this->setParameter('appKey',$this->_cfg['app_account']); //165080754535613288
$this->setParameter('v','1.0');
$this->setParameter('format','json');
$this->setParameter('encryptData',$encrypt_data);
$this->setParameter('encrtptKey',$encrypt_key);
$this->setParameter('signData',$sign_data);
$this->setParameter('sign',$this->getSign());
//照片不参与签名
foreach ($n_sign as $key => $value) {
$this->setParameter($key,$value);
}
$this->_fileLog($this->getAllParameters(),"请求参数发送地址:".$url);
$result = $this->requestCurl($url);
//返回数据
//得到返回的结果 接下来对返回结果进行解密和验证签名
$result = json_decode($result,1);
$this->_fileLog($result,"返回结果记录:");
if($result['data']) {
//平台公钥加密的结果 我方用私钥解密 得到aes**-向量
$get_encrtpt_Key = $result['data']['encrtptKey'];
//先获取aes的key 和 向量
$aes_data = $this->privateDecrypt($get_encrtpt_Key, $this->private_key);
$aes_data = explode('-', $aes_data);
$put_aes_key = $aes_data['0'];
$pur_aes_vi = $aes_data['1'];
//aes解密获取报文数据
$get_encrypt_data = $result['data']['encryptData'];
$put_data = $this->decrypt($get_encrypt_data, $put_aes_key, $pur_aes_vi);
//对报文数据 去掉空格
$put_data = trim($put_data);
//对报文数据 进行RSA签名验证
$get_signData = $result['data']['signData'];
$sign_info = $this->publicDecrypt($get_signData, $put_data, $this->other_public_key);
//验证返回为true表明验证通过,否则验证没通过
if ($sign_info) {
$new_data = '';
$put_data = explode('&', $put_data);
foreach ($put_data as $key => $value) {
$name = explode('=', $value);
$new_data[$name['0']] = $name['1'];
}
$this->_fileLog($new_data,"返回解密数据:");
return $new_data;//返回解密后的业务数据
} else {
return array('errorCode' => "9999", "message" => "验签解密失败");
}
}else{
return $result;//返回结果 无加密数据
}
}
public function hasstring($source,$target){
preg_match_all("/$target/sim", $source, $strResult, PREG_PATTERN_ORDER);
return !empty($strResult[0]);
}
/*
* 子商户认证接口
* 所有的参数来源将用$this->params 数组 进行存储
*/
public function auth()
{
//1组装参数数据
//2获取银行简码处理
if(this->hasstring(bank = D("bank_code")->where(array('bank_name'=>shortcode = shortcode){
data = array(
‘accName’ => this->params[‘accNo’],
‘bankName’ => shortcode,
‘branchName’ => this->params[‘contactMobile’],
‘contactName’ => this->params[‘idcard’],
‘merCityCode’ => this->params[‘merDistrictCode’],
‘merFullname’ => this->params[‘merProvinceCode’],
);
//[email protected]请求数据保存数据库
$add = array(
'name' => $this->params['merFullname'],
'idcard' => $this->params['idcard'],
'mobile' => $this->params['contactMobile'],
'bankno' => $this->params['accNo'],
'channelno' => $this->params['channelno'],
);
$res = D("qht_user")->where(array('channelno'=>$this->params['channelno'],'idcard'=>$this->params['idcard'], 'bankno' => $this->params['accNo']))->find();
if($res){
//认证
if($res['subcode'] && $res['status_auth'] == 1){
$return = array(
'status'=>200,
'data'=>$res['subcode'],
);
exit(json_encode($return));
}
}else{
D("qht_user")->add($add);
}
//3不验签数据
$n_sign = array(
'legalPhotoPos' => '[email protected]' . $this->base64EncodeImage($this->params['legalPhotoPos']),
'legalPhotoNeg' => '[email protected]' . $this->base64EncodeImage($this->params['legalPhotoNeg']),
'idcardPhotoHalf' => '[email protected]' . $this->base64EncodeImage($this->params['idcardPhotoHalf']),
'idcardDebitPhoto' => '[email protected]' . $this->base64EncodeImage($this->params['idcardDebitPhoto'])
);
//@todo未认证false请填写变量
$url = $this->_cfg['second_url'];
$method_name = "certification";
$json = $this->postData($data, $url, $n_sign, $method_name);
if(!empty($json['subCode'])){
$save = array(
'subcode'=>$json['subCode'],
'status_auth'=>1
);
D("qht_user")->where(array('channelno'=>$this->params['channelno'],'idcard'=>$this->params['idcard'], 'bankno' => $this->params['accNo']))->save($save);
$return = array(
'status'=>200,
'data'=>$json['subCode'],
);
echo json_encode($return);
}else{
$save = array(
'status_auth'=>2
);
D("qht_user")->where(array('channelno'=>$this->params['channelno'],'idcard'=>$this->params['idcard'], 'bankno' => $this->params['accNo']))->save($save);
$return = array(
'status'=>201,
'messgae'=>'认证失败',
);
echo json_encode($return);
}
}
/**
*子商户进件接口
*/
public function report(){
$data = array(
'channelNumber'=>$this->params['channelNumber'],
'drawalFee'=>$this->params['drawalFee'],
'tradeRate'=>$this->params['tradeRate'],
'subCode'=>$this->params['subcode'],
);
//保存进件数据
$save = array(
'fee'=>$this->params['drawalFee'],
'rate'=>$this->params['tradeRate'],
'channelno'=>$this->params['channelNumber'],
);
$re = D("qht_user")->where(array('channelno'=>$this->params['channelno'],'idcard'=>$this->params['idcard'], 'bankno' => $this->params['bankno']))->find();
if($re){
$res = D("qht_user")->where(array('channelno'=>$this->params['channelno'],'idcard'=>$this->params['idcard'], 'bankno' => $this->params['bankno']))->save($save);
if($res['status_reg'] == 1){
$return = array(
'status'=>200,
'message'=>'进件成功'
);
exit(json_encode($return));
}
}
$url = $this->_cfg['second_url'];
$method_name = "merchantChannel";
$n_sign = array();
$json = $this->postData($data, $url, $n_sign,$method_name);
//$json['errorCode'] == 200
if($json['errorCode'] == "200"){
$save = array(
'status_reg'=>1
);
D("qht_user")->where(array('channelno'=>$this->params['channelno'],'idcard'=>$this->params['idcard'], 'bankno' => $this->params['accNo']))->save($save);
$return = array(
'status'=>200,
'message'=>'进件成功'
);
echo json_encode($return);
} elseif ($json['errorCode'] == "100"){
$return = array(
'status'=>200,
'message'=>$json['message']
);
echo json_encode($return);
}else{
$return = array(
'status'=>201,
'message'=>$json['message']
);
echo json_encode($return);
}
}
/**
*子商户支付接口
*/
public function pay(){
$order = D('order_ftf')->where(array('orderid'=>$this->params['orderId']))->find();
if(!$order){
//生成订单记录
$order = array(
'orderid'=>$this->params['orderId'],
'name'=>$this->params['accName'],
'card_no'=>$this->params['idcard'],
'bank_sub'=>$this->params['bank_sub'],
//银行卡号
'bank_no'=>$this->params['bank_no'],
'bank_province'=>$this->params['bank_province'],
'bank_city'=>$this->params['bank_city'],
//信用卡号
'paybanknum'=>$this->params['creditCard'],
'mobile'=>$this->params['mobile'],
'amount'=>$this->params['amount'],
'notify_url'=>$this->params['notifyUrl'],
'front_url'=>$this->params['frontUrl'],
'addtime'=>time(),
'partner'=>$this->params['partner'],
'userrate'=>$this->params['userrate'],
'fees'=>$this->params['fee']
);
//生成订单记录
$order = D('order_ftf')->add($order);
}
//组装数据,发送请求
$data = array(
'accName'=>$this->params['accName'],
'amount'=>$this->params['amount'],
'callBackUrl'=>$this->_cfg['callBack'],
'channelNumber'=>$this->params['channelNumber'],
'channelTag'=>'1',
'creditCard'=>$this->params['creditCard'],
'frontUrl'=>$this->params['frontUrl'],
'idcard'=>$this->params['idcard'],
'orderId'=>$this->params['orderId'],
'settleType'=>'1',
'subCode'=>$this->params['subcode'],
);
$url = $this->_cfg['second_url'];
$method_name = "quickPay";
$n_sign = array();
$result = $this->postData($data, $url, $n_sign,$method_name);
//$result['RetCode'] == '0000'
if($result['RetCode'] == '0000'){
$up = D('order_ftf')->where(array('sn' => $this->params['orderId']))->save(array('payurl'=>$result['Page']));
$rs = array(
'status' => 200,
'data' =>array(
'Amount'=>$result['Amount'],
'MerchOrderId'=>$result['MerchOrderId'],
'MerchantId'=>$result['MerchantId'],
'OrderId'=>$result['OrderId'],
'Page'=>$result['Page'],
'Sign'=>$result['Sign'],
'TradeTime'=>$result['TradeTime'],
'Version'=>$result['Version'],
),
);
echo json_encode($rs);
}else{
$rs = array(
'status' => 201,
'message' =>'请求失败',
);
echo json_encode($rs);
}
}
/**
*认证信息变更接口
*/
public function updateauth(){
//1组装参数数据
//2获取银行简码处理
if($this->params['bankName'] != '中国银行' && $this->hasstring($this->params['bankName'],'中国')){
$bank = substr($this->params['bankName'],6);
}else{
$bank = $this->params['bankName'];
}
$bank = D("bank_code")->where(array('bank_name'=>$bank))->find();
$shortcode = $bank['bank_code'];
if(!$shortcode){
$this->resError("未找到对应的银行简码");
}
$data = array(
'subCode'=>$this->params['subCode'],
'merProvinceCode'=>$this->params['merProvinceCode'],
'merCityCode'=>$this->params['merCityCode'],
'merDistrictCode'=>$this->params['merDistrictCode'],
'accNo'=>$this->params['accNo'],
'bankShortcode'=>$shortcode,
'bankName'=>$this->params['bankName'],
'branchName'=>$this->params['branchName'],
);
$url = $this->_cfg['second_url'];
$method_name = "updateCertification";
$n_sign = array();
$result = $this->postData($data, $url, $n_sign,$method_name);
if($result['errorCode'] == 200){
$save = array(
'bankno'=>$this->params['accNo'],
);
D("qht_user")->where(array('channelno'=>$this->params['channelNumber'],'idcard'=>$this->params['idcard'],'bankno'=>$this->params['bankno']))->save($save);
$return = array(
'status'=>200,
'message'=>$result['message']
);
echo json_encode($return);
}else{
$return = array(
'status'=>201,
'message'=>$result['message']
);
echo json_encode($return);
}
}
/**
*费率变更接口
*/
public function updaterate(){
$data = array(
'tradeRate'=>$this->params['tradeRate'],
'drawalFee'=>$this->params['drawalFee'],
'channelNumber'=>$this->params['channelNumber'],
'subCode'=>$this->params['subCode'],
);
$url = $this->_cfg['second_url'];
$method_name = "updateMerchantChannel";
$n_sign = array();
$result = $this->postData($data, $url, $n_sign,$method_name);
if($result['errorCode'] == 200){
$save = array(
'rate'=>$this->params['tradeRate'],
'fee'=>$this->params['drawalFee'],
);
D("qht_user")->where(array('channelno'=>$this->params['channelNumber'],'idcard'=>$this->params['idcard'], 'bankno' => $this->params['bankno']))->save($save);
$return = array(
'status'=>200,
'message'=>$result['message']
);
echo json_encode($return);
}else{
$return = array(
'status'=>201,
'message'=>$result['message']
);
echo json_encode($return);
}
}
private function decdata($rs){
$rs = str_replace(' ','',$rs);
$new_data = '';//分解后的数组数据
$put_data = explode('&', $rs);
foreach ($put_data as $key => $value) {
$name = explode('=', $value);
$new_data[$name['0']] = $name['1'];
}
//1先获取aes的key 和 向量
$get_encrtpt_Key = $new_data['encrtptKey'];
$aes_data = $this->privateDecrypt($get_encrtpt_Key, $this->private_key);
$aes_data = explode('-', $aes_data);
$put_aes_key = $aes_data['0'];
$pur_aes_vi = $aes_data['1'];
$data = $this->decrypt($new_data['encryptData'], $put_aes_key, $pur_aes_vi); //解密数据
$this->_fileLog($data,"解密结果:");
return $data;
}
/**
*支付异步回调地址
*
*/
public function callback(){
$rsHttp = file_get_contents('php://input');
$bb = urldecode($rsHttp);
$str = $this->decdata($bb);
$params = '';//分解后的数组数据
$put_data = explode('&', $str);
foreach ($put_data as $key => $value) {
$name = explode('=', $value);
$params[$name['0']] = $name['1'];
}
$merchantCode = $params['merchantCode'];
$orderId = $params['orderId'];
$supOrderId = $params['supOrderId'];
$status = $params['status'];
$amount = $params['amount'];
$incomeAmount = $params['incomeAmount'];
$payTime = $params['payTime'];
$message = $params['message'];
$subcode = $params['subCode'];
if($status==1){
$order = M('order_ftf')->where(array('orderid'=>$orderId))->find();
// 订单数据
if (!$order) {
return $this->ajaxReturn(null, '查无订单信息', 3001);
}
$save = array(
'paytime'=>$payTime,
'status'=>$status,
'supOrderId'=>$supOrderId,
'subcode'=>$subcode,
'merchantcode'=>$merchantCode,
'incomeamount'=>$incomeAmount,
'message'=>$message,
);
D('order_ftf')->where(array('orderid'=>$orderId))->save($save);
$notifyData = array(
'orderid' => $orderId, // 订单号
'paytime' => $payTime, // 支付时间
'amount' => $amount, // 支付金额
);
$notifyData = apiUtil::argSort($notifyData);
$res = strtoupper($this->notifyClient($order, $notifyData));
if ($res == 'SUCCESS') {
M('order_ftf')->where(array('orderid' => $orderId))->save(array('callback' => 1)); //是否回调成功
//商户回调成功返回字符串1
//$this->notifySuccess();
}
}else{
M('order_ftf')->where(array('orderid'=>$orderId))->save(array('status'=>'3'));
return $this->ajaxReturn(null, '支付接口回掉数据有误!', 3001);
}
}
/**
*支付订单查询
*/
public function order_select($orderid){
//1获取参数
$order = D("order_ftf")->where(array('orderid'=>$orderid))->find();
if($order){
$data = array(
'orderId'=>$order['orderid'],
'subCode'=>$order['subcode'],
'supOrderId'=>$order['supOrderId'],
);
$url = $this->_cfg['second_url'];
$method_name = "queryOrder";
$n_sign = array();
$data = $this->postData($data, $url, $n_sign,$method_name);
if(!$data){
return false;
}else{
return $data;
}
}
}
/**
* post请求
*/
public function requestCurl($url){
$data = $this->getAllParameters();
$ch = curl_init();
// 设置curl允许执行的最长秒数
curl_setopt($ch, CURLOPT_TIMEOUT, 500);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_URL,$url);
//发送一个常规的POST请求。
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,http_build_query($data));
curl_setopt($ch, CURLOPT_HEADER,0);//是否需要头部信息(否)
// 执行操作
$result = curl_exec($ch);
if($result){
curl_close($ch);
}else{
$err_str=curl_error($ch);
echo($err_str);
curl_close($ch);
}
#返回数据
return $result;
}
/**
* 获取签名
*/
public function getSign(){
this->getAllParameters();
$sign_string = '';
if (is_array($data)) {
ksort($data);
foreach ($data as $key => $value) {
$sign_string .= $key . $value;
}
}
$sign_string = $this->_cfg['app_secret'].$sign_string.$this->_cfg['app_secret'];
//echo '签名'.$sign_string."<br>";
//$new_sign = sha1($sign_string);
$new_sign = strtoupper(sha1($sign_string));
//echo "<br>sign值:".$new_sign;
//$new_sign = strtoupper('af0358995ce7e6e8fcbc8d80f0af81519561d620');
//var_dump($new_sign);
return $new_sign;
}
/**
* 获取图片base64位编码
* @param $image_file
* @return string
*/
public function base64EncodeImage (image_data = file_get_contents(base64_image = base64_encode(base64_image;
}
/**
* aes解密
*/
public function decrypt($input, $key,$key_iv)
{
$encryptedData = base64_decode($input);
$decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $encryptedData, MCRYPT_MODE_CBC, $key_iv);
return $decrypted;
}
/**AES加密
* @param $input
* @param $key
* @return string
*/
public function encrypt($input, $key,$key_iv) {
$data = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $input, MCRYPT_MODE_CBC, $key_iv);
return base64_encode($data);
}
/**
* RSA私钥加密
* @param string $private_key 私钥
* @param string $data 要加密的字符串
* @return string $encrypted 返回加密后的字符串
* @author mosishu
*/
public function privateEncrypt(data){
// 私钥密码
// key_width = 64;
// privateKey, “\n” ) ){
// key_str = substr( i * key_width) ){
// key_str;
// privateKey = "-----BEGIN PRIVATE KEY-----\n" . implode("\n", privateKey = $privateKey .”\n—–END PRIVATE KEY—–”;
//如果秘钥是不带头和尾的 就需要用上面这个转化成 带头尾的秘钥
//私钥
$private_id = openssl_pkey_get_private( $privateKey);
openssl_sign($data, $signature, $private_id, OPENSSL_ALGO_SHA1 );
openssl_free_key( $private_id );
//加密后的内容通常含有特殊字符,需要编码转换下
$signature = base64_encode($signature);
return $signature;
//下面的不可用 应删除
// pi_key = openssl_pkey_get_private(data,pi_key);//私钥加密
// encrypted);//加密后的内容通常含有特殊字符,需要编码转换下,在网络间通过url传输时要注意base64编码是否是url安全的
// return $encrypted;
//最大允许加密长度为117,得分段加密
// data,1);//生成**位数 1024 bit key
// foreach(chunk){
// encryptionOk = openssl_private_encrypt(partialEncrypted,encryptionOk === false){
// return false;
// }
// partialEncrypted;
// }
//
// encrypted);//加密后的内容通常含有特殊字符,需要编码转换下,在网络间通过url传输时要注意base64编码是否是url安全的
// return $encrypted;
}
/**
* RSA公钥解密(私钥加密的内容通过公钥可以解密出来)
* @param string $public_key 公钥
* @param string $data 私钥加密后的字符串
* @return string $decrypted 返回解密后的字符串
* @author mosishu
*/
public function publicDecrypt(data,key_width = 64;
privateKey = “”;
if( ! stripos( i = 0;
while( public_key , key_width , privateKey = "-----BEGIN PUBLIC KEY-----\n" . implode("\n", privateKey .= “\n—–END PUBLIC KEY—–”;
}else{
public_key;
}
$pkeyid = openssl_pkey_get_public($privateKey);
$sign = base64_decode($sign);
$verify = openssl_verify($data, $sign, $pkeyid);
openssl_free_key($pkeyid);
return $verify;
}
//RSA公钥加密
public function publicEncrypt(data){
//—–BEGIN PUBLIC KEY—– —–END PUBLIC KEY—–
key_width = 64;
privateKey = “”;
if( ! stripos( i = 0;
while( public_key , key_width , privateKey = "-----BEGIN PUBLIC KEY-----\n" . implode("\n", privateKey .= “\n—–END PUBLIC KEY—–”;
}else{
public_key;
}
$private_id = openssl_pkey_get_public( $privateKey);
$encrypted = '';
//$pu_key = openssl_pkey_get_public($privateKey);
openssl_public_encrypt($data,$encrypted,$private_id);//公钥加密
$encrypted = bin2hex($encrypted);
$encrypted = base64_encode($encrypted);
return $encrypted;
}
//RSA私钥解密
public function privateDecrypt(private_key){
data);
$data = hex2bin($data);
$pi_key = openssl_pkey_get_private($private_key);
openssl_private_decrypt($data,$output,$pi_key);
return $output;
}
/**
* @param 设置方法
*/
public function setMethod(parameter) {
return isset(parameter])?parameter]:”;
}
/**
*设置参数值
*/
public function setParameter(parameterValue) {
parameter] = $parameterValue;
}
/**
*获取所有请求的参数
*@return array
*/
public function getAllParameters() {
return $this->parameters;
}
/**
* 文件日志
* @DateTime 2017-08-18T08:52:34+0800
* @param [type] $data [description]
* @return [type] [description]
*/
protected function _fileLog($data, $tag, $task = '')
{
$content = (is_array($data) || is_object($data)) ? var_export($data, true) : $data;
$file = MODULE_NAME . '_' . ACTION_NAME . '_' . date('Y-m-d') . '.php';
$tag = ($tag ? "_{$tag}" : '') . ($task ? "_{$task}" : '');
return flog($content, $tag, $file);
}
/**
* 记录 请求参数 和 回调记录
* @param $params
* @param $rs
*/
public function log($params='', $rs='')
{
$dir = PATH_VAR . 'runtime/Api/Logs/';
if (!file_exists($dir)) mkdir($dir);
$datetime = date('Y-m-d H:i:s');
$module = MODULE_NAME;
$action = ACTION_NAME;
$str = "[{$datetime}] {$module}/{$action} \n";
$str .= (var_export($params, true) . "\n");
$str .= (var_export($rs, true) . "\n\n\n\n");
$date = date('Ymd');
file_put_contents($dir . "{$date}.log", $str, FILE_APPEND);
// 删除8天前日志
$oldDate = date('Ymd', (time() - (60 * 60 * 24 * 8)));
if (file_exists($dir . "{$oldDate}.log")) {
unlink($dir . "{$oldDate}.log");
}
}
}
上一篇: Leetcode 443: 压缩字符串