class MpLobbySn {
public static $public;
public static $private;
public function __construct($public = '',$private = ''){
if($public){
self::$public = openssl_get_publickey($public);
}
if($private){
self::$private = openssl_get_privatekey($private);
}
}
//超长加密
public static function SuperLongPublicKeyEncrypt($content){
$data = str_split($content,117);
foreach($data as $value){
openssl_public_encrypt($value,$back_value,self::$public);
$result .= $back_value;
}
return base64_encode($result);
}
//超长解密
public static function SuperLongPrivateKeyDecrypt($content){
$data = base64_decode($content);
$data_arr = str_split($data,128);
foreach($data_arr as $values){
openssl_private_decrypt($values,$sstr,self::$private);
$results .= $sstr;
}
return $results;
}
//生成签名
public static function Signkey($data){
$res = false;
if(openssl_sign($data, $res_sgin, self::$private)){
$res = base64_encode($res_sgin);
}
return $res;
}
//验证签名
public static function Verifykey($data,$sgin){
$sgin_str = base64_decode($sgin);
$bool = (bool)openssl_verify($data, $sgin_str, self::$public);
return $bool;
}
//释放资源
public function __destruct(){
openssl_free_key(self::$public);
openssl_free_key(self::$private);
}
}
new MpLobbySn(self::$publickey,self::$privatekey); //传公密钥
$content = MpLobbySn::SuperLongPublicKeyEncrypt($data); //调用加密
MpLobbySn::SuperLongPrivateKeyDecrypt($content); //调用加密
$sign = MpLobbySn::Signkey($data); //生成签名
$bool = MpLobbySn::Verifykey($data,$sign); //验证签名