安装 phpseclib
composer require phpseclib/phpseclib:~2.0
封装使用
已经require composer autoload.php
<?php
namespace common;
use phpseclib\Crypt\RSA;
use phpseclib\Crypt\AES;
class AuthTools
{
/** 生成rsa密钥对
* @return array privatekey,publickey
*/
public static function rsaCreateKey()
{
$rsa = new RSA();
$key = $rsa->createKey();
return $key;
}
/** sa加密
* @param $string
* @param $key
* @return string
*/
public static function rsaEncrypt($string, $key)
{
$rsa = new RSA();
$rsa->loadKey($key);
$rsa->setEncryptionMode(RSA::ENCRYPTION_NONE); //选择加密的模式
return base64_encode($rsa->encrypt($string)); //需要对结果进行base64转码
}
/** rsa解密
* @param $encryptStr
* @param $key
* @return mixed
*/
public static function rsaDecrypt($encryptStr, $key)
{
$rsa = new RSA();
$rsa->loadKey($key);
$rsa->setEncryptionMode(RSA::ENCRYPTION_NONE);
return $rsa->decrypt(base64_decode($encryptStr));
}
/** 随机字符串作为aes key
* @param int $len
* @return string
*/
public static function aesCreateKey($len = 16)
{
return \phpseclib\Crypt\Random::string($len);
}
/** aes加密
* @param $string
* @param $aesKey
* @return string
*/
public static function aesEncrypt($string, $aesKey)
{
$aes = new AES();
$aes->setKey($aesKey);
return base64_encode($aes->encrypt($string));
}
/** aes解密
* @param $encryptStr
* @param $aesKey
* @return string
*/
public static function aesDecrypt($encryptStr, $aesKey)
{
$aes = new AES();
$aes->setKey($aesKey);
return $aes->decrypt(base64_decode($encryptStr));
}
}
交互流程
1,A端生成RSA私钥/公钥,将公钥发送给B端。
2,B端生成aesKey并用RSA公钥加密aesKey。
3,B端将加密后的aesKey发送给A端。
4,A端解密获得aesKey。
5,A发送aes加密业务数据到B端
6,B解密aes获得业务数据
重复5,6
php远程api控制window电脑 实例