PHP RSA公钥加密解密

    /**
     * RSA公钥加密
     * @param string $string 待加解密数据
     * @return string 返回加密内容
     */
    public function rsa_public_encode($string){
        try{
            $rsa_public = '';
            $public_key = "-----BEGIN PUBLIC KEY-----\n" . wordwrap($rsa_public, 64, "\n", true) . "\n-----END PUBLIC KEY-----";
            $key = openssl_pkey_get_public($public_key);
            if(!$key){
                throw new \Exception('公钥不可用');
            }
            $result = openssl_public_encrypt($string, $crypted, $key);
            if(!$result){
                throw new \Exception('公钥加密失败');
            }
            openssl_free_key($key);
            return base64_encode($crypted);
        }catch (\Exception $e){
            $errorMsg = $e->getMessage() ? $e->getMessage() : 'encode error';
            return '';
        }
    }

    /**
     * RSA公钥解密
     * @param string $string 待解密数据
     * @return string 返回解密内容
     */
    public function rsa_public_decode($string){
        try{
            $rsa_public = '';
            $public_key = "-----BEGIN PUBLIC KEY-----\n" . wordwrap($rsa_public, 64, "\n", true) . "\n-----END PUBLIC KEY-----";
            $key = openssl_pkey_get_public($public_key);
            if(!$key){
                throw new \Exception('公钥不可用');
            }
            $result = openssl_public_decrypt(base64_decode($string), $decrypted, $key);
            openssl_free_key($key);
            if(!$result){
                throw new \Exception('公钥解密失败');
            }
            return $decrypted;
        }catch (\Exception $e){
            $errorMsg = $e->getMessage() ? $e->getMessage() : 'decode error';
            return '';
        }
    }

    /**
     * RSA私钥解密
     * @param string $string 待解密数据
     * @return string 返回解密内容
     */
    public function rsa_private_decode($string){
        try{
            $rsa_private = '';
            $private_key = "-----BEGIN PRIVATE KEY-----\n" . wordwrap($rsa_private, 64, "\n", true) . "\n-----END PRIVATE KEY-----";
            $key = openssl_pkey_get_private($private_key);
            if(!$key){
                throw new \Exception('私钥不可用');
            }
            $result = openssl_private_decrypt(base64_decode($string), $decrypted, $key);
            if(!$result){
                throw new \Exception('私钥解密失败');
            }
            return $decrypted;
        }catch (\Exception $e){
            $errorMsg = $e->getMessage() ? $e->getMessage() : 'decode error';
            return '';
        }
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凌晨四点的_LA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值