php中rsa生成公私鑰和加解密


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM