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;
Rsa加密实战
最新推荐文章于 2024-04-15 17:15:25 发布