PHP web開發中RSA加密解密簡單示例

2021-07-06 07:28:25 字數 1688 閱讀 2131

前言:rsa演算法可以說是大名鼎鼎,廣泛應用於非對稱加密和數字簽名認證!感興趣的朋友完全可以深入的學習一下rsa演算法並嘗試**實現,相信一定可以極大的提高**能力,個人也是計畫著要抽時間好好研究學習一下。本文的目的只是示例如何應用大神的**實現前端js層面的rsa加密和後端php層面的rsa解密,快速上手提高我們開發的web系統的安全性和可靠性!

一、demo文件目錄結構

rsademo -------- 根目錄

|---------------- js資料夾(rsa library包括jsbn.js、prng4.js、rng.js、rsa.js四個檔案)

|---------------- openssl資料夾(rsa金鑰生成工具,基於openssl協議)            

|---------------- php資料夾(包含lib檔案rsa.php和php解密部分**rsa-example.html)

|---------------- phpcreatekey(php**實現:根據pem金鑰檔案生成加密解密過程所需的引數)

|---------------- rsa-example.html(demo示例頁面)

二、openssl協議生成rsa金鑰檔案

1.開啟openssl客戶端,路徑:rsademo/openssl/bin/openssl.exe

2.參考openssl目錄下說明文件中的命令,生成pem金鑰檔案。注意金鑰檔案生成在openssl/bin目錄下

三、基於金鑰檔案生成金鑰引數(用於js加密函式和php解密函式)

1.複製第二步中生成的rsa私鑰檔案命名為key.pem並替換phpcreatekey目錄下的key.pem示例檔案

2.或者也可以修改phpcreatekey目錄下的**檔案var.php,確保讀取的rsa私鑰檔案正確!

3.直接請求var.php即返回需要的金鑰引數

四、js實現rsa加密

1.rsa-example.html實現了加密業務

2.需要引用js資料夾目錄下的四個檔案

3.加密實現**:

//rsa加密,需要的公鑰和指數兩個引數均是在第三步中生成
function do_encrypt()
4.執行示例

五、php實現rsa解密

1.rsa-example.php實現了加密業務

2.需要引入rsa.php檔案

3.解密實現**:

//呼叫rsa_decrypt函式解密密文,注意解密的密文必須是二進位制資料,而第三步中的js加密結果是16進製制資料 

$decrypted = rsa_decrypt($encrypted, $private, $modulus, $keylength);

4.執行示例

六、擴充套件

前面提到了,rsa演算法廣泛應用於非對稱加密和數字簽名!本文所使用的js函式庫和php函式庫功能非常完善,這裡只是使用了加密解密功能,我在後面也會繼續深入學習。

1.js部分使用了jsbn函式庫,

2.php部分使用了phpseclib函式庫,

RSA非對稱加密解,分段加密解密

rsa 公鑰加密演算法是1977年由 羅納德 李維斯特 ron rivest 阿迪 薩莫爾 adi shamir 和 倫納德 阿德曼 leonard adleman 一起提出的。1987年7月首次在美國公布,當時他們三人都在麻省理工學院工作實習。rsa就是他們三人姓氏開頭字母拼在一起組成的。rsa是...

php web開發中的快取

快取的作用 減少記憶體,cpu資源的消耗 快取中需要關注的問題 1 快取命中率 2 快取的更新策略 3 快取單條資料的最大值 4 快取總量的大小html meta標籤控制快取 http控制快取的機制 如果有快取 1 先讀取etag if not match 2 last modified if mo...

前端JS,後端python實現RSA加密解密

目錄前言 一 後端準備工作及 實現 1.1 三方庫安裝 1.2 公鑰和私鑰生成 二 前端準備工作及 2.1 前端依賴安裝 2.2 前端對內容進行加密 三 後端對密文進行解密 3.1 3.2 結果驗證 四 參考資料 最近遇到乙個需求 1 前端登入時密碼密文傳輸到後台。2 後台使用者表密碼落庫加密演算法...