openssl 非对称加密 [ 2.0 版本 ]
在我们的数据传输过程中,有些数据是加密后返回过来的,这个时候 客户端 需要对这个数据进行解密 ,大家都知道,单向加密,解密 只有一个加密key,黑客很容易就破解了。 那么今天就给大家介绍另外一个加密方式。非对称加密。 这个加密的好处是 ,有两把钥匙,可以打开同一把锁,并且两把钥匙都不一样。私钥加密,公钥解密。公钥解密,私钥解密。代码如下:
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2019/8/23
* Time: 17:23
*/
namespace app\service;
class Rsa {
/**
* @var string 公钥
*/
public $publickey = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzZYvkn/r9jAyfKi46VKP6NBt8CMnd56e1qNDTDrRJQv/qpwNMTj8crJnyDnKyUl8g16qfqVKCn3n1kxnbuncyYnYE2M0CZLkA7A+sbpiod48oDXjfUZCpolhEUtXNBE4owKZT/NwymhwI0yq8UtVobjnHTfOQwkA48gOW7Wr+TJ2R2PzzGujKD4oquDdidSFKKI454FpurIkg/PRybNqECytNN7FFZnxiQcKNrqM0hM2Aa/LS0F0E0iifhIrj/S29NGH1QTxjhjx78urGGsu++zhyIKbeHtf7ncLwkWU2KgXwOw6r2qomloGEGrIYlPS8ERCIK+d6bXb+tnbGo7xxQIDAQAB';
/**
* @var string 私钥
*/
public $privatekey = 'MIIEpAIBAAKCAQEAzZYvkn/r9jAyfKi46VKP6NBt8CMnd56e1qNDTDrRJQv/qpwNMTj8crJnyDnKyUl8g16qfqVKCn3n1kxnbuncyYnYE2M0CZLkA7A+sbpiod48oDXjfUZCpolhEUtXNBE4owKZT/NwymhwI0yq8UtVobjnHTfOQwkA48gOW7Wr+TJ2R2PzzGujKD4oquDdidSFKKI454FpurIkg/PRybNqECytNN7FFZnxiQcKNrqM0hM2Aa/LS0F0E0iifhIrj/S29NGH1QTxjhjx78urGGsu++zhyIKbeHtf7ncLwkWU2KgXwOw6r2qomloGEGrIYlPS8ERCIK+d6bXb+tnbGo7xxQIDAQABAoIBADgQTMjWubJZUmtMV6DJMxV6QYDLFWg5iXde7mtLXt2LeB0+kRprP+zHWiXwHKznrVzl4/jFenuB+kcmbs6AWAVd4d7nnrk9pZCb73zoJx2dTUsjZvYywtpHfIEK2q0IRTmu68Ax0wBfmrUFo1hKAwAnPF9raIQ/YE69r6yyzkMWUit+e22KgGznW1Kwih6jBzzKPhKQjwsUNAEds7f1haulRgImA2i4FUjLw41ZyAir8FvTewiO05ETJ4u8MatTAoNyWL3MgzwbPpKBZizA4xO0f2BbfvvDlXH9yw1tCC1HdbY2IJ2rGQjAY8tZr0W28gK198Zy5NUdEFYFD2cbSgECgYEA+tb/NlRXA3TGl2gdCHdGzLu7YTT0+rNpwU3kcm3uOPvaioJb1yfTDqletLhmkDUvu56H7MFdYzXFcK+WRp+04knkm7tYJz3jnS+F0M17x8yZMRidrmY/D2w3J0GI+SdD8omrs0oVjADD10ZnLQN6AbnuDGO5NC4rr3Lh1iTLfI0CgYEA0dDfBqLacJyqjtM2AyaImBzlFSoz8fSsGKZWHxsB9bQiq6TROy6zbx9bJpvuYWtT4PN8zH1fpvurLbJ4Q7aoJBo9a8EiWPjpFqyQNq5M6cE1n227rqD7NWKTW79q8B1Xuf2OlVJfGZC';
/**
* @return string 获取公钥
*/
public function getPublicKey()
{
$pub_key ="-----BEGIN PUBLIC KEY-----\n"
.wordwrap($this->publickey, 64, "\n", true).
"\n-----END PUBLIC KEY-----";
return $pub_key;
}
/**
* @return string 获取私钥
*/
public function getPrivateKey()
{
$pri_key ="-----BEGIN PRIVATE KEY-----\n"
.wordwrap($this->privatekey, 64, "\n", true).
"\n-----END PRIVATE KEY-----";
return $pri_key;
}
/**
* 用户公钥加密
* @param $data string 需要加密的数据
* @return string 加密后的数据
*/
public function encryptByPublicKey($data)
{
openssl_public_encrypt($data,$crypted,$this->getPublicKey());
return $crypted;
}
/**
* 用私钥加密
* @param $data string 需要加密的数据
* @return string 加密后的数据
*/
public function encryptByPrivateKey($data)
{
openssl_private_encrypt($data,$crypted,$this->getPrivateKey());
return $crypted;
}
/**
* 公钥解密
* @param $data string 用公钥解密
* @return mixed 解密后的数据
*/
public function decryptByPublicKey($data)
{
openssl_public_decrypt($data,$decrypted,$this->getPublicKey());
return $decrypted;
}
/**
* 私钥解密
* @param $data string 私钥解密的数据
* @return mixed 解密后的数据
*/
public function decryptByPrivateKey($data)
{
openssl_private_decrypt($data,$decrypted,$this->getPrivateKey());
return $decrypted;
}
public function makeSign()
{
return true;
}
wonderwong 深圳
注册时间:2012-03-21
最后登录:2024-06-01
在线时长:10小时29分
最后登录:2024-06-01
在线时长:10小时29分
- 粉丝8
- 金钱290
- 威望70
- 积分1090
共 1 条评论
私钥加密,公钥解密。公钥加密,私钥解密吧。楼主?
私钥加解密,公钥解密。
@xihrni 对的,
是的 ,我上面写错了。