PHP基於openssl實現的非對稱加密操作示例

2022-09-26 06:54:08 字數 1770 閱讀 6328

使用非對稱加密主要是借助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

ps:關於加密解密感興趣的朋友還可以參考本站**工具:

**des加密/解密工具

md5**加密工具:

**雜湊/雜湊演算法加密工具:

**md5/hash/sha-1/sha-2/sha-256/sha-512/sha-3/ripemd-160加密工具:

**sha1/sha224/sha256/sha384/sha512加密工具:

PHP基於openssl實現的非對稱加密操作

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

PHP使用OpenSSL實現AES加密的筆記

記錄這兩天遇到的一些問題,一開始主要是對一些概念理解的不清楚 比如aes是一種演算法,而openssl是乙個擴充套件庫,其中包含對aes演算法的實現 當然在完全理解演算法後可以自己實現,但可能會遇到很多問題,我會在以後進行嘗試 目前在專案的使用中,還是使用擴充套件庫的方法最快最簡單 1,加密方法 通...

Linux下基於openssl實現數字簽名

建立原檔案src.txt 也可以是任意型別的檔案 這裡僅作演示,輸入命令 echo this is a digital signature example.src.txta 建立私鑰 rsa加密演算法產生的2048位私鑰,並使用f4作為公鑰的e引數,將私鑰儲存在檔案key.pri中 openssl ...