php rsa签名验签,PHP实现RSA签名和验签

define('ICLOD_CERT_PATH',dirname(__FILE__).'/xx_pri.key' ); //私钥文件

define('ICLOD_CERT_PUBLIC_PATH',dirname(__FILE__).'/xx_pub.key' );//公钥文件

class RSA{

/**

公钥用于对数据进行加密,私钥用于对数据进行解密。

私钥用于对数据进行签名,公钥用于对签名进行验证

* @access public

* @param 签名算法

* @param $data

* @return string

*/

public function sign($data){

$priKey = file_get_contents(ICLOD_CERT_PATH);

$res = openssl_get_privatekey($priKey);

openssl_sign($data, $sign, $res);

openssl_free_key($res);

//base64编码

$sign = base64_encode($sign);

return $sign;

}

/**

* @access public

* @param 加密算法

* @param $data

* @return string

*/

public function rsa($data){

$encryptData="";

$priKey = file_get_contents(ICLOD_CERT_PATH);

$res=openssl_get_privatekey($priKey);

$result =openssl_private_encrypt($data, $encryptData, $res,OPENSSL_PKCS1_PADDING);

openssl_free_key($res);

return base64_encode($encryptData);

}

/**

* @access public

* @param 解密算法

* @param $data

* @return string

*/

public function decryptRSA($data){

$decryptData ='';

$publickey =file_get_contents(ICLOD_CERT_PUBLIC_PATH);

$res = openssl_pkey_get_public($publickey);

$result=openssl_public_decrypt(base64_decode($data), $decryptData, $res);

return $decryptData;

}

/**

* @access public

* @param 验签

* @param $data

* @return json

*/

public function verify($data){

$publickey =file_get_contents(ICLOD_CERT_PATH);

$res=openssl_get_publickey($publickey);

$result = (bool)openssl_verify($data['signedValue'], base64_decode($data['sign']), $res);

openssl_free_key($res);

return $result;

}

}

公私钥详情:https://www.cnblogs.com/wt645631686/p/8390936.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值