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

2021-07-22 11:00:43 字數 2082 閱讀 6936

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

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

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

[plain]view plain

copy

openssl genrsa -out rsa_private_key.pem 1024  

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

[plain]view plain

copy

openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem  

4.這裡我們使用私鑰加密,公鑰解密

[php]view plain

copy

<?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私鑰檔案,生成是可以指定私鑰長度和密碼保護 openssl genrsa out rsa p...

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...