工作中要用到国密sm2加密解密,php不能很好的实现,最终利用java做成接口服务调用。
附件:sm2.rar
默认端口:8636。
/**
* sm2加密
* @param $data
* @param $pubKey
*/
function sm2_encrypt($data,$pubKey,$url='http://127.0.0.1:8636'){
if (is_array($data)){
$data=json_encode($data);
}
$params=[
'plainText'=>$data,
'publicKey'=>$pubKey
];
$ret=curlPost($url.'/public/api/sm2Encrypt',$params);
$ret=json_decode($ret,true);
if (!is_array($ret) || $ret['msg']!='success' || $ret['data']==''){
return false;
}else{
return $ret['data'];
}
}
/**
* sm2解密
* @param $data
* @param $pubKey
*/
function sm2_decrypt($data,$priKey,$url='http://127.0.0.1:8636'){
$params=[
'cipherText'=>$data,
'privateKey'=>$priKey
];
$ret=curlPost($url.'/public/api/sm2Decrypt',$params);
$ret=json_decode($ret,true);
if (!is_array($ret) || $ret['msg']!='success' || $ret['data']==''){
return false;
}else{
return $ret['data'];
}
}