注意:php使用rsa時需要開啟openssl擴充套件
//建立公私鑰
$res = openssl_pkey_new();
//獲取私鑰
openssl_pkey_export($res, $private_key);
//獲取公鑰
$public_key = openssl_pkey_get_details($res)['key'];
//組合rsa
$rsa = [
'public_key' => $public_key,
'private_key' => $private_key,
];echo "";
var_dump($rsa);
exit;
結果:
這裡把上面獲取的公私鑰分別儲存到變數 $public_key,$private_key
/**
* 公鑰加密
*/$data = 'rsa加密解密';
//解析公鑰
$res = openssl_pkey_get_public($public_key);
//使用公鑰加密資料
openssl_public_encrypt($data, $crypted, $res);
echo "";
var_dump($crypted);
exit;
加密後結果:
* 私鑰解密
*///解析私鑰
$res = openssl_pkey_get_private($private_key);
//使用私鑰解密資料
openssl_private_decrypt($crypted, $decrypted, $res);
echo "";
var_dump($decrypted);
exit;
解密後結果:
/**
* 私鑰加密
*/$data = 'rsa加密解密';
//解析私鑰
$res = openssl_pkey_get_private($private_key);
//使用私鑰加密
openssl_private_encrypt($data, $crypted, $res);
/** * 公鑰解密
*///解析公鑰
$res = openssl_pkey_get_public($public_key);
openssl_public_decrypt($data, $decrypted, $res);
echo "";
var_dump($decrypted);
exit;
結果和公鑰加密,私鑰解密差不多,這裡就不截圖了
私鑰加密,公鑰解密: 用於簽名
公鑰加密,私鑰解密: 用於加解密
關於使用場景這篇文章說的比較好:
RSA公私鑰生成
1 生成私鑰 openssl genrsa out rsa private key.pem 1024 2 根據私鑰生成與之配對的公鑰 openssl rsa in rsa private key.pem pubout out rsa public key.pem 3 將第1步生成的私鑰轉換成pkcs...
使用OpenSSL生成RSA公私鑰
1.openssl genrsa out rsa private key 2048.pem 2048 生成rsa私,x509編碼,2048位 2.openssl pkcs8 in rsa private key 2048.pem out rsa private key 2048 pkcs8.pem ...
openssl公私鑰生成
1 雙擊啟動bin openssl.exe 2 手動輸入命令 或者 複製一行命令,右擊標題欄 編輯 貼上 3 enter完成輸入,生成對應公私鑰檔案 生成步驟 1 生成private key.pem openssl genrsa out private key.pem 1024 2 生成pkcs8 ...