1. 產生 RSA 金鑰
進入 dos模式到 php5\extras\openssl 目錄下, 進行下列操作
參數說明 openssl rsautl --help
產生 1024bit 的 private key 輸入 openssl genrsa -out private.pem 1024
由private key 產生 public key 輸入 openssl rsa -in private.pem -out public.pem -outform PEM -pubout
執行範例
$dir = 'pem檔路徑';
$data = "A secret message for Bob";
// 從 PEM 檔取出金鑰
$publicKey = openssl_get_publickey(file_get_contents("$dir/public.pem"));
$privateKey = openssl_get_privatekey(file_get_contents("$dir/private.pem"));
// RSA加密 + Base64 編碼
openssl_private_encrypt($data,$crypttext,$privateKey);
$crypttext = base64_encode($crypttext);
print "密文\n";
print "$crypttext\n";
// Base64 解碼+ RSA解密
$crypttext = base64_decode($crypttext);
openssl_public_decrypt($crypttext,$newsource,$publicKey);
print "原文\n";
print "$newsource";
openssl_free_key($publicKey);
openssl_free_key($privateKey);
進入 dos模式到 php5\extras\openssl 目錄下, 進行下列操作
參數說明 openssl rsautl --help
產生 1024bit 的 private key 輸入 openssl genrsa -out private.pem 1024
由private key 產生 public key 輸入 openssl rsa -in private.pem -out public.pem -outform PEM -pubout
執行範例
$dir = 'pem檔路徑';
$data = "A secret message for Bob";
// 從 PEM 檔取出金鑰
$publicKey = openssl_get_publickey(file_get_contents("$dir/public.pem"));
$privateKey = openssl_get_privatekey(file_get_contents("$dir/private.pem"));
// RSA加密 + Base64 編碼
openssl_private_encrypt($data,$crypttext,$privateKey);
$crypttext = base64_encode($crypttext);
print "密文\n";
print "$crypttext\n";
// Base64 解碼+ RSA解密
$crypttext = base64_decode($crypttext);
openssl_public_decrypt($crypttext,$newsource,$publicKey);
print "原文\n";
print "$newsource";
openssl_free_key($publicKey);
openssl_free_key($privateKey);
兩個常用指令
openssl rsa -in pribate key.pem -noout -modulus
將公鑰以數值(BigInteger)型態呈現
openssl rsa -in key.pem -text -noout
以可讀的文字型態呈現, 原 openssl 產出的是經過 base64 編碼後的資料檔
指令碼