Rsa加密实战

    RSA是目前最有影响力和最常用的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码
攻击,已被ISO推荐为公钥数据加密标准。
    今天只有短的RSA钥匙才可能被强力方式解破。到2008年为止,世界上还没有任何可靠的攻击RSA
算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被解破的。但在分布式计
算和量子计算机理论日趋成熟的今天,RSA加密安全性受到了挑战和质疑。
    RSA算法基于一个十分简单的数论事实:将两个大质数相乘十分容易,但是想要对其乘积进行
因式分解却极其困难,因此可以将乘积公开作为加密密钥。
<?php

$pri_key = '-----BEGIN PRIVATE KEY-----
MIICeQIBADANBgkqhkiG9w0BAQEFAASCAmMwggJfAgEAAoGBAK7HUlL+zOdlyluS
dV5Fp8GVEsNPsb4nW6utj3Fu84dQ/ArEcByhZfOxcpDtmyq84z/+cjSStHeDINAV
6maEQYWIP98aSJviXBqf10moh0x0rYr6/ucfxXGI5m90gVOI/Ph0W2FT9pw/6/Xu
ay8SeafL94X2HXEQGXeg/tjqEj+DAgMBAAECgYEAgRpm6zuf7AW6tm23GM3nHw2Y
8IC70LSN+ICaBrZoWTovE10LW3q1Lo+TCw8YoTcpvimb/s2nVOidolet79Ad/OZt
AhXzr3a/PQbB/Li0sTs/UEH6NzZFzRqM24DUJVI0MStOonJVd3yLKIta2DpWP/FK
XOwdgJ+kmAgHLtBvr3ECQQDb9xqvKHMAsH03CmTK2Ux1SZ/K/rvc8r+E86zAEKg1
nFNs+K92FkxGUA6jIM2qX4ZbHcZ0np1ToCtoGxhasQZnAkEAy2kuVdYxI6xrfTfH
974r6S1Y887rWH/Hv3d+QarsQH2jPn0+H/UjXTE5k0FO5wP2DyUVBgO5rkC3U02K
8Ks0hQJBANq3eNwDv15HHyp0dkZRDTpua6n/4rLO2OqNFQ+hQHCWMUngeS9U+qDL
h9Jikr2+4CyHjcZ11P/K+n44ut2qui8CQQCsGaTbeSsATMxxGHX3FY6fbf+54JNc
wFgnlhlbxBq5gdNRdrPOZCD0o0ZcYcA5Uy+npq8/9Hzwgs7ZC12HvMLlAkEAux2x
nu5XMvHDoelNpVvgVAhiY503BZfFxFjGGsIgVkMjCd034v/Kgy3D2v8L+iP+jOzR
fAJRFrWMrwv6DKv5qA==
-----END PRIVATE KEY-----';

$pub_key = '-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCux1JS/sznZcpbknVeRafBlRLD
T7G+J1urrY9xbvOHUPwKxHAcoWXzsXKQ7ZsqvOM//nI0krR3gyDQFepmhEGFiD/f
Gkib4lwan9dJqIdMdK2K+v7nH8VxiOZvdIFTiPz4dFthU/acP+v17msvEnmny/eF
9h1xEBl3oP7Y6hI/gwIDAQAB
-----END PUBLIC KEY-----
';

$pi_key =  openssl_pkey_get_private($pri_key);//这个函数可用来判断私钥是否是可用的,可用返回资源id Resource id
$pu_key = openssl_pkey_get_public($pub_key);//这个函数可用来判断公钥是否是可用的
print_r($pi_key);
print_r($pu_key);
echo '<br>';
$data = array(
    'code'=>'0',
    'msg'=>'success',
    'data'=>array(
        'name'=>'xiaojinglong',
        'age'=>26
    )
);
$data = json_encode($data);
$encrypted = "";
$decrypted = "";
print_r("原始数据");
echo $data;
echo '<br>';
print_r('私钥加密:');
openssl_private_encrypt($data,$encrypted,$pi_key);//私钥加密
$encrypted = base64_encode($encrypted);//加密后的通常含有特殊字符编码转换
echo $encrypted;
echo '<br>';
echo "公钥解密:<br>";
//私钥加密的内容通过公钥可用解密出来
openssl_public_decrypt(base64_decode($encrypted),$decrypted,$pu_key);

print_r($decrypted);
echo '<br>';
print_r("公钥加密");
openssl_public_encrypt($data,$encrypted,$pu_key);//公钥加密
$encrypted = base64_encode($encrypted);
echo '加密后:'.$encrypted;
echo "私钥解密:";
//私钥解密
openssl_private_decrypt(base64_decode($encrypted),$decrypted,$pi_key);
echo $decrypted;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值