PHP 運用rsa加密和解密例項

2022-07-13 09:39:11 字數 2201 閱讀 5429

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等前端

$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 "

";print_r($pu_key);echo "\n"; echo "

";echo "";

$data='php ras加密演算法';

$encrypted = "";

$decrypted = "";

echo "加密的源資料:".$data."\n"; echo "

";echo "private key encrypt:\n"; echo "

";openssl_private_encrypt($data,$encrypted,$pi_key);//私鑰加密

$encrypted = base64_encode($encrypted);//加密後的內容通常含有特殊字元,需要編碼轉換下,在網路間通過url傳輸時要注意base64編碼是否是url安全的

echo '私鑰加密後:'.$encrypted."\n"; echo "

";echo "

";echo "public key decrypt:\n"; echo "

";openssl_public_decrypt(base64_decode($encrypted),$decrypted,$pu_key);//私鑰加密的內容通過公鑰可用解密出來

echo '公鑰解密後:'.$decrypted."\n"; echo "

";echo "";

echo "public key encrypt:\n"; echo "

";openssl_public_encrypt($data,$encrypted,$pu_key);//公鑰加密

$encrypted = base64_encode($encrypted);

echo $encrypted,"\n"; echo "

";echo "private key decrypt:\n"; echo "

";openssl_private_decrypt(base64_decode($encrypted),$decrypted,$pi_key);//私鑰解密

echo $decrypted,"\n"; echo "

";php的rsa配置常見問題:

●php開發語言的**示例中openssl資料夾中的3個dll檔案用法

1、如果你的系統是windows系統,且system32檔案目錄下沒有libeay32.dll、ssleay32.dll這兩個檔案

那麼需要拷貝這兩個檔案到system32檔案目錄。

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

那麼請把php_openssl.dll放在這個資料夾中

MySQL加密和解密例項詳解

mysql加密和解密例項詳解 資料加密 解密在安全領域非常重要。對程式設計師而言,在資料庫中以密文方式儲存使用者密碼對入侵者剽竊使用者隱私意義重大。有多種前端加密演算法可用於資料加密 解密,下面我向您推薦一種簡單的資料庫級別的資料加密 解密解決方案。以mysql資料庫為例,它內建了相應的加密函式 a...

mysql 加密 MySQL加密和解密例項詳解

mysql加密和解密例項詳解 資料加密 解密在安全領域非常重要。對程式設計師而言,在資料庫中以密文方式儲存使用者密碼對入侵者剽竊使用者隱私意義重大。有多種前端加密演算法可用於資料加密 解密,下面我向您推薦一種簡單的資料庫級別的資料加密 解密解決方案。以mysql資料庫為例,它內建了相應的加密函式 a...

php des 加密解密例項

des加密是對稱加密中在網際網路應用的比較多的一種加密方式,php 通過mcrypt擴充套件庫來支援des加密,要在php中使用des加密,需要先安裝mcrypt擴充套件庫 下面是加密解密的例項 php view plain copy iv size mcrypt get iv size mcryp...