RSA加解密实例

1.生成密钥和公钥:
开始前需要准备openssl环境
linux 需安装openssl工具包,win下需要安装openssl的程序

2.php代码:

  function RSA(){
        $pukey='-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDmna16KhQQwCn5DP4Zu7fDKMwG
qhztmwzK3qql4noy3aKs06qpSbmVlHff/DUdAdEeCuAJE5SpFWGM5p8JOEM+S2wX
srUNtOKoLQ5wN3kTvquTTxfQmVT/oWdPFpu85/1tZaeMPic/TvRoRdapoautEFhV
U+Z21SzxeGIiJ1nNHQIDAQAB
-----END PUBLIC KEY-----
';
         $prkey='-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQDmna16KhQQwCn5DP4Zu7fDKMwGqhztmwzK3qql4noy3aKs06qp
SbmVlHff/DUdAdEeCuAJE5SpFWGM5p8JOEM+S2wXsrUNtOKoLQ5wN3kTvquTTxfQ
mVT/oWdPFpu85/1tZaeMPic/TvRoRdapoautEFhVU+Z21SzxeGIiJ1nNHQIDAQAB
AoGAYYZ+7XHMCIVreqIu9yz2enbPSWY5U5ZFY6mkmwBa0xX9jH765hqCfCpMQ5HB
2GGDUOQieFQqgxLCrTZ+PQTpEipGrg1b+FjNdeJKltoPfeiBKXL2yJgK6oRMs0YT
RasYsuD67kvxnet1dUQiUdUiGWNl0mC2SgswdcGrLYJx6MECQQD/rnPN8P40xmxZ
FoZhaUeERE6DykqMeLH9ecQEu0sd+p2Pt8izBRJZKVvj/Ufs+bayg0bZjhI5wPVD
1rndQF6tAkEA5uc7F3eEbEMT4XygpXtXzn0DRD+SH9spd3y/GA92adLyVEMIHoST
yyb57kNBShotXhbFDuxqisD7wF98ASImMQJATrOXR+QPi5UsUrvhP2jVr7wK4vxI
uDaKqzhpAv/X3nF/QHbU224LONDHTUVwd1xiRU6tZ1gY+hgQJwKYkac3vQJBAIgI
XkXbAccOVZ4YYERdwENEXzJMCXh/E5Tzh1lTcr2xq1Z9D0F7dd7PnZsDQGm5tlSi
MYIzQilwvGB/YH0Cc2EQHVIUsJoBAP1goc9ao6QXR14jZfY5bwW+5iIFY+U38ep
C4Q5rHRWWDBqwumeI1eaO/wl7hEzBeMNzm3UcTqfi9s=
-----END RSA PRIVATE KEY-----
';
        $str='ruoke_Test';

        openssl_public_encrypt($str,$encrypted,$pukey);//公钥加密

        echo '加密后的密文:'.$encrypted,"<br>";//加密后的密文

        $encrypted = base64_encode($encrypted);//base64编码

        echo 'base64编码后的密文:'.$encrypted,"<br>";

        $res = openssl_get_privatekey($prkey);

        //用base64将内容还原成二进制
        $content = base64_decode($encrypted);

        //把需要解密的内容,按128位拆开解密
        $result  = '';
        for($i = 0; $i < strlen($content)/128; $i++  ) {
            $data = substr($content, $i * 128, 128);
            openssl_private_decrypt($data, $decrypt, $res);
            $result .= $decrypt;
        }

        openssl_free_key($res);

        echo '解密后内容:'.$result;

    }

运行结果:
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值