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