php中rsa生成公私鑰和加解密
注意: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 "<pre/>";
var_dump($rsa);
exit;
結果:
rsa加解密
這里把上面獲取的公私鑰分別保存到變量 $public_key,$private_key
公鑰加密,私鑰解密
/**
* 公鑰加密
*/
$data = 'rsa加密解密';
//解析公鑰
$res = openssl_pkey_get_public($public_key);
//使用公鑰加密數據
openssl_public_encrypt($data, $crypted, $res);
echo "<pre/>";
var_dump($crypted);
exit;
加密后結果:
/**
* 私鑰解密
*/
//解析私鑰
$res = openssl_pkey_get_private($private_key);
//使用私鑰解密數據
openssl_private_decrypt($crypted, $decrypted, $res);
echo "<pre/>";
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 "<pre/>";
var_dump($decrypted);
exit;
結果和公鑰加密,私鑰解密差不多,這里就不截圖了
使用場景
私鑰加密,公鑰解密: 用於簽名
公鑰加密,私鑰解密: 用於加解密
關於使用場景這篇文章說的比較好:https://blog.csdn.net/bandaoyu/article/details/83997398