RSA 加解密

优质
小牛编辑
142浏览
2023-12-01

我们封装了一个RSA 加解密的工具放在 extends 中。首先看看它的文件结构

rsa 
    |-- RSACrypt 加解密主程序
    |-- RSACryptBigData 大数据加解密
    |-- SignUtil 签名类
    |-- rsa_public_key.pem 公钥
    |-- rsa_private_key.pem 私钥

RSACrypt API

RSACrypt::encryptByPrivateKey($data) //私钥加密 RSACrypt::decryptByPublicKey($data) //公钥解密

RSACrypt::encryptByPublicKey($data) //公钥加密 RSACrypt::decryptByPrivateKey($data) //私钥解密

注意: 当需要加密的内容长度超过117个字节的时候你就需要用 RSACryptBigData 去替换 RSACrypt 了。

签名

在api通信的时候,为了安全认证,经常会用到签名,所以这里我们提供了一个签名工具类 SignUtil, 它只有一个api

SignUtil::sign($url, $params);

参数名称参数类型参数说明
$urlstring签名的url
$paramsstring|array签名的参数

栗子

$url = "http://www.r9it.com";
$client = new HttpClient();
$params = array(
    'username' => 'xiaoming',
    'mobile' => '13848575937'
);
$params['__timer'] = time();
$params['__secret'] = md5($url);
$sign = SignUtil::sign($url, $params);
$rsa = new RSACrypt();
$params['__sign'] = $rsa->encryptByPublicKey($sign);
$result = $client->post($url,    $params);