国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

php rsa加密解密使用詳解

2024-05-04 21:55:37
字體:
來源:轉載
供稿:網友

 1、加密解密的第一步是生成公鑰、私鑰對,私鑰加密的內容能通過公鑰解密(反過來亦可以)

下載開源RSA密鑰生成工具openssl(通常Linux系統都自帶該程序),解壓縮至獨立的文件夾,進入其中的bin目錄,執行以下命令:

 

代碼如下:
openssl genrsa -out rsa_private_key.pem 1024
openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out private_key.pem
openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

 

第一條命令生成原始 RSA私鑰文件 rsa_private_key.pem,第二條命令將原始 RSA私鑰轉換為 pkcs8格式,第三條生成RSA公鑰 rsa_public_key.pem
從上面看出通過私鑰能生成對應的公鑰,因此我們將私鑰private_key.pem用在服務器端,公鑰發放給android跟ios等前端

2、php中用生成的公鑰、私鑰進行加密解密,直接上代碼

 

代碼如下:
$fp=fopen("rsa/rsa_private_key.pem","r"); //你的私鑰文件路徑
$private_key=fread($fp,8192);
fclose($fp);
$fp1=fopen("rsa/rsa_public_key.pem","r"); //你的公鑰文件路徑
$public_key=fread($fp1,8192);
fclose($fp1);
//echo $private_key;
$pi_key=openssl_pkey_get_private($private_key);//這個函數可用來判斷私鑰是否是可用的,可用返回資源id Resource id
$pu_key=openssl_pkey_get_public($public_key );//這個函數可用來判斷公鑰是否是可用的
print_r($pi_key);echo "/n"; echo "<br>";
print_r($pu_key);echo "/n"; echo "<br>";
echo "<hr>";
$data='php ras加密算法';
$encrypted = "";
$decrypted = "";
echo "加密的源數據:".$data."/n"; echo "<br>";
echo "private key encrypt:/n"; echo "<br>";
openssl_private_encrypt($data,$encrypted,$pi_key);//私鑰加密
$encrypted = base64_encode($encrypted);//加密后的內容通常含有特殊字符,需要編碼轉換下,在網絡間通過url傳輸時要注意base64編碼是否是url安全的
echo '私鑰加密后:'.$encrypted."/n"; echo "<br>";echo "<br>";
echo "public key decrypt:/n"; echo "<br>";
openssl_public_decrypt(base64_decode($encrypted),$decrypted,$pu_key);//私鑰加密的內容通過公鑰可用解密出來
echo '公鑰解密后:'.$decrypted."/n"; echo "<br>";
echo "<hr>";
echo "public key encrypt:/n"; echo "<br>";
openssl_public_encrypt($data,$encrypted,$pu_key);//公鑰加密
$encrypted = base64_encode($encrypted);
echo $encrypted,"/n"; echo "<br>";
echo "private key decrypt:/n"; echo "<br>";
openssl_private_decrypt(base64_decode($encrypted),$decrypted,$pi_key);//私鑰解密
echo $decrypted,"/n"; echo "<br>";

 

PHP的RSA配置常見問題:

●PHP開發語言的代碼示例中openssl文件夾中的3個DLL文件用法

1、如果你的系統是windows系統,且system32文件目錄下沒有libeay32.dll、ssleay32.dll這兩個文件
那么需要拷貝這兩個文件到system32文件目錄。

2、如果您的php安裝目錄下(php/ext)中沒有php_openssl.dll

那么請把php_openssl.dll放在這個文件夾中

喜歡加密解密的小伙伴一定要好好看看這篇文章,受益匪淺。。。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 连云港市| 汉川市| 山东| 新晃| 沅江市| 江阴市| 楚雄市| 县级市| 拜城县| 丹江口市| 鄂尔多斯市| 大荔县| 沐川县| 道孚县| 长海县| 余干县| 玉山县| 密云县| 绥棱县| 区。| 株洲市| 天峨县| 万宁市| 晋中市| 宁远县| 江永县| 丹凤县| 行唐县| 海门市| 女性| 开原市| 安达市| 民县| 六安市| 桃园县| 工布江达县| 白城市| 峨眉山市| 东光县| 沁水县| 弥渡县|