//
/**
* 利用约定数据和私钥生成数字签名
* @param $data 待签数据
* @return String 返回签名
*/
function rsaSign($data) {
$priKey = file_get_contents(API_PATH.'/key/rsa_private_key.pem'); //获取证书信息
$res = openssl_get_privatekey($priKey);
openssl_sign($data, $sign,$res,OPENSSL_ALGO_MD5);
openssl_free_key($res);
//base64编码
$sign = base64_encode($sign);
return $sign;
}
//验证数字签名
public function isValid($data, $signature){
$public_key = file_get_contents(API_PATH.'/key/rsa_public_key.pem');//获取证书信息
$pkeyid = openssl_get_publickey($public_key);
$ret = (bool)openssl_verify($data,base64_decode($signature), $pkeyid, OPENSSL_ALGO_MD5);
openssl_free_key($pkeyid);
return $ret;
}
//公钥加密
public function rsaEncrypt($data=''){
if(empty($data)){
return false;
}
$public_content = file_get_contents(API_PATH.'/key/rsa_public_key.pem');
if (empty($public_content)){
return false;
}
$public_key = openssl_get_publickey($public_content);
$original_arr = str_split($data,117);//折分
foreach($original_arr as $o){
$sub_enc = null;
openssl_public_encrypt($o,$sub_enc,$public_key);
$original_enc_arr[] = $sub_enc;
}
openssl_free_key($public_key);
$original_enc_str = base64_encode(implode('',$original_enc_arr));//最终网络传的密文
return $original_enc_str;
}
//私钥解密
function rsaDecrypt($content) {
$priKey = file_get_contents(API_PATH.'/key/rsa_private_key.pem');
$res = openssl_get_privatekey($priKey);
//用base64将内容还原成二进制
$content = base64_decode($content);
//把需要解密的内容,按128位拆开解密
$result = '';
for($i = 0; $i < strlen($content)/128; $i++ ) {
$data = substr($content, $i * 128, 128);
openssl_private_decrypt($data, $decrypt, $res);
$result .= $decrypt;
}
openssl_free_key($res);
return $result;
}
云南然成科技有限公司是一家专门从事各种软件开发(比如:网站建设开发、微信公众号开发、微信小程序开发、APP开发)的互联网公司,是云南省科技厅、省财政厅、省地税局、省国税局等认定的高新技术企业!