php使用openssl來實現非對稱加密

2021-07-22 22:36:25 字數 1733 閱讀 9655

使用非對稱加密主要是借助openssl的公鑰和私鑰,用公鑰加密私鑰解密,或者私鑰加密公鑰解密。

1.安裝openssl和php的openssl擴充套件

2.生成私鑰:openssl genrsa 用於生成rsa私鑰檔案,生成是可以指定私鑰長度和密碼保護

openssl genrsa -out rsa_private_key.pem

1024

3.生成公鑰:rsa命令用於處理rsa金鑰、格式轉換和列印資訊

openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
4.這裡我們使用私鑰加密,公鑰解密

<?php    

/**

* 金鑰檔案的路徑

*/

$privatekeyfilepath = 'rsa_private_key.pem';

/**

* 公鑰檔案的路徑

*/

$publickeyfilepath = 'rsa_public_key.pem';

extension_loaded('openssl') or die('php需要openssl擴充套件支援');

(file_exists($privatekeyfilepath) && file_exists($publickeyfilepath)) or die('金鑰或者公鑰的檔案路徑不正確');

/**

* 生成resource型別的金鑰,如果金鑰檔案內容被破壞,openssl_pkey_get_private函式返回false

*/

$privatekey = openssl_pkey_get_private(file_get_contents($privatekeyfilepath));

/**

* 生成resource型別的公鑰,如果公鑰檔案內容被破壞,openssl_pkey_get_public函式返回false

*/

$publickey = openssl_pkey_get_public(file_get_contents($publickeyfilepath));

($privatekey && $publickey) or die('金鑰或者公鑰不可用');

/**

* 原資料

*/

$originaldata = '加密前hahahaha';

/**

* 加密以後的資料,用於在網路上傳輸

*/

$encryptdata = '';

echo '原資料為:', $originaldata, php_eol;

///用私鑰加密

if (openssl_private_encrypt($originaldata, $encryptdata, $privatekey)) else

///用公鑰解密

/**

* 解密以後的資料

*/

$decryptdata ='';

if (openssl_public_decrypt($encryptdata, $decryptdata, $publickey)) else

php使用openssl來實現非對稱加密

使用非對稱加密主要是借助openssl的公鑰和私鑰,用公鑰加密私鑰解密,或者私鑰加密公鑰解密。1.安裝openssl和php的openssl擴充套件 2.生成私鑰 openssl genrsa 用於生成rsa私鑰檔案,生成是可以指定私鑰長度和密碼保護 plain view plain copy op...

php使用openssl來實現非對稱加密

使用非對稱加密主要是借助openssl的公鑰和私鑰,用公鑰加密私鑰解密,或者私鑰加密公鑰解密。1.安裝openssl和php的openssl擴充套件 2.生成私鑰 openssl genrsa 用於生成rsa私鑰檔案,生成是可以指定私鑰長度和密碼保護 openssl genrsa out rsa p...

php使用openssl來實現RSA 非對稱加密

使用非對稱加密主要是借助openssl的公鑰和私鑰,用公鑰加密私鑰解密,或者私鑰加密公鑰解密。1.安裝openssl和php的openssl擴充套件 2.生成私鑰 openssl genrsa 用於生成rsa私鑰檔案,生成是可以指定私鑰長度和密碼保護 plain view plain copy op...