php實現(xiàn)RSA的加密解密和簽名驗簽功能

最近在3A平臺購買了服務(wù)器,部署了PHP環(huán)境

一:生成RSA的私鑰和公鑰

1:RSA私鑰生成

$resource = openssl_pkey_new();
openssl_pkey_export($resource, $privateKey);
echo($privateKey);

2:RSA公鑰生成

$resource = openssl_pkey_new();
$detail = openssl_pkey_get_details($resource);
$publicKey = $detail['key'];
echo($publicKey);

注意:
如果在生成私鑰和公鑰時出現(xiàn)如下提示:

image.png

需要將你的php環(huán)境下的openssl.cnf文件地址加到系統(tǒng)環(huán)境變量中
增加變量名OPENSSL_CONF,變量值為openssl.cnf文件地址

二:RSA實現(xiàn)私鑰加密和公鑰解密

1:RSA私鑰加密

$key = '123';//需要加密的字符串
$pkey=openssl_pkey_get_private($privateKey);//$privateKey為私鑰字符串
openssl_private_encrypt($key, $encryptedData, $pkey);
$encryptedData = base64_encode($encryptedData);
echo($encryptedData);

2:RSA公鑰解密

$pkey = openssl_pkey_get_public($publicKey);//$publicKey為公鑰字符串
openssl_public_decrypt(base64_decode($encryptedData), $data, $pkey);//$encryptedData為私鑰加密串
echo($data);

三:RSA實現(xiàn)簽名和驗簽

1:私鑰簽名

$key = '123';//需要簽名的字符串
$pkey=openssl_pkey_get_private($privateKey);//$privateKey為私鑰字符串
openssl_sign($key, $signature,$privateKey);
openssl_free_key($pkey);
$signature = base64_encode($signature);
echo($signature);

2:公鑰驗簽

$pkey = openssl_pkey_get_public($publicKey);//公鑰字符串
$verify = openssl_verify($key, base64_decode($signature),$publicKey);//$key為需要簽名的字符串//$signature為簽名后字符串
openssl_free_key($pkey);
echo($verify);

根據(jù)如上我們就可以實現(xiàn)RSA的加密解密和使用RSA的私鑰公鑰實現(xiàn)簽名和驗簽功能了!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容