前言: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 後台使用者表密碼落庫加密演算法...