在PHP中使用RSA的一个很好的例子
发布时间:2020-12-13 17:39:36 所属栏目:PHP教程 来源:网络整理
导读:我试图找出一种在 PHP中使用RSA的方法. 我已生成公钥和私钥 ssh-keygen -t rsa 而现在我正在尝试使用我的PHP代码中的那些.这是我正在使用的代码: ?php$string=$_GET["i"];//$fp=fopen ("public.pem","r");$pub_key='ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtT
我试图找出一种在
PHP中使用RSA的方法.
我已生成公钥和私钥 ssh-keygen -t rsa 而现在我正在尝试使用我的PHP代码中的那些.这是我正在使用的代码: <?php $string=$_GET["i"]; //$fp=fopen ("public.pem","r"); $pub_key='ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtTLDrnS+MyPb/MGHzgcS90DgaoPiDNattlL0Xo7keAjfqz5/yCXU0L8ilkAWIwME5DdXK04MskRtupYPwxPGB4Y7bG/4wvArx5FEgDSq6FUMNvQZ/Vqj13uvcjadLctC2ypAUPRo39qO1IGLEDEWNOS49UgLxzfnr1dZF/Ox5m5UjhOjsALcTiv4eR6ClGcCrAHE7Jp5nL2BwVu46nx3eFlpe7cljQVUOQDgUa5yWaRoJE6qcYgQu1TDo6b/pcAWU1WVu+HzJY4g0aoV2VqamCnl3oyWoPz7ykvxbJbHv7/qTbV+IBNzSx4R7KSppvnPKsrbeiWROvZ4JF84leX+Iw== root@ip-10-83-11-72'; //fclose($fp); $PK=""; $PK=openssl_get_publickey($pub_key); if (!$PK) { echo "Cannot get public key"; echo $pub_key; } $finaltext=""; openssl_public_encrypt($string,$finaltext,$PK); if (!empty($finaltext)) { openssl_free_key($PK); echo "Encryption OK!"; echo $finaltext; echo "<br/><br/><br/>"; }else{ echo "Cannot Encrypt"; } // STEP 2: Decription (Using Private Key) //$fp=fopen ("private.pem","r"); $priv_key2='-----BEGIN RSA PRIVATE KEY----- MIIEoAIBAAKCAQEAtTLDrnS+MyPb/MGHzgcS90DgaoPiDNattlL0Xo7keAjfqz5/ yCXU0L8ilkAWIwME5DdXK04MskRtupYPwxPGB4Y7bG/4wvArx5FEgDSq6FUMNvQZ /Vqj13uvcjadLctC2ypAUPRo39qO1IGLEDEWNOS49UgLxzfnr1dZF/Ox5m5UjhOj sALcTiv4eR6ClGcCrAHE7Jp5nL2BwVu46nx3eFlpe7cljQVUOQDgUa5yWaRoJE6q cYgQu1TDo6b/pcAWU1WVu+HzJY4g0aoV2VqamCnl3oyWoPz7ykvxbJbHv7/qTbV+ IBNzSx4R7KSppvnPKsrbeiWROvZ4JF84leX+IwIBIwKCAQAparBiY9Oz6vB0SX4g dqU/1FCNX/kngYbKlp5Bf78xYR0udK9+NIhqOlEMZmt1t4wW6BPspCAovy8GE6vU 0VHV1Yns5mS+189+EpNQgREfKWHgrNK9kQ+Btd71iNN4LnWucA6zaxCoMfTC28gD s3LKQuhylB/zBXbI/gW8VPV2fzvFd35iA6QqNKWbjkaRd2y0TOv+RAcnCrYFwV5O LscgjUNS2Hk8dlyXoneB8SqxiFzrXgSTihUelsoPQCj7mZLZ87UFF6sLU85gxoNT tw0VoKD3Ve4poDEkWH28v39MCA/ZOPtNu68oimgVxRWyswvr2X9UvQ8joy2QaQZs 0mRLAoGBAN+dc6J8BgzmCr1yUQejU9nPAIFseH0Y+Jd/kHMV0CcSTnJwEak+6H5x aTVQVNVMxdBd3xLG6GLYUWz01ptj3ubkO3qisqeVWvXhp7thHBaj640jV33jUY8p eSrYVqPTDXGb+Jq56Tu0y+9sZeqXJBDeu2vLi7wlK2iAjQ9GHHYdAoGBAM9wtThH LOEveuZ+PwY0qK1IMLsHuF049g3onUk+n6k3oPCBMmnllwCwMOAo2oJEKgFAtEOl I5F9L6KsF7D1IUz1j+Mi578+pIQIndvp/aq1n5iBHSbHjpWhz6B6elcADzNbY5fy FRlE9JshAIAiBmokN+Kb3rLZ4ShMBq0zsRE/AoGAOYBCTlpn9LAupb5PWbxIwvq2 /LV+EYoUCbMWg/5Ld8Lg+Nr9OiYehun2e2xtle8rjVn3iHxKYo9lZSkD/BJd45nG JtlhI8dR53SKN39e/oHsHPp1lWZWzQqqIPXNIs/e4rMUCoeTvuVZAw0+x0tvrJEL n2A53+xM/Z1mGd7UHl8CgYARx9UE0uaW9XDvL2R83/EzbJZ2bmBCgTmpa7W10irx P0hPIQRSOEAkoWNGaebX9zbM6En3K2ly3tgyg8eEMkSu0zg4Ck5g2XvQzYnfpleS ShT+cXeG+yl6ijZeNmJB+LDYhC0bpwkfbE97AtQoPW5DnLRVQI9uanJiiix1PvHr iQKBgBj/RiXsDHvVJ28xZPUffZntrAD/TWXMHZWVMFgfsf8Ti0O7ypXqY43+Aoph nfDH6xJFqU9azsiv5xQVY7X1h4+DuOamqdawIV5LtYod+ip0dxduQMfrqLld/p0m E+jAaxvC4b6zqomFnZ9MB9eAzUg9i8UQkc4H3cH/bO6MKPG3 -----END RSA PRIVATE KEY----- ';//fread ($fp,8192); //fclose($fp); $PK2=openssl_get_privatekey($priv_key2); $Crypted=openssl_private_decrypt($Data,$Decrypted,$PK2); if (!$Crypted) { $MSG.="<p class='error'>Cannot Decrypt ($CCID).</p>"; }else{ echo "Decrypted Data: " . $Decrypted; } 最后,该应用程序崩溃: Cannot get public key Warning: openssl_public_encrypt() [function.openssl-public-encrypt]: key parameter is not a valid public key in /home/menkaur/public_html/iathao.com/bookmarks/lcn.php on line 13 Cannot Encrypt 我究竟做错了什么? 解决方法
openssl使用的关键是PEM格式.要生成它,请使用以下代码:
openssl genrsa -des3 -out private.pem 1024 它将生成一个名为“private.pem”的文件.然后,您可以使用以下命令生成公钥: openssl rsa -in private.pem -out public.pem -outform PEM -pubout 在PHP中,您可以使用以下键: <?php $pub = file_get_contents('public.pem'); $pk = openssl_get_publickey($pub); if(!$pk) ... 然后用你的逻辑做你想做的事. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |