国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

利用RSA對前后端加密的探索

banana_pi / 705人閱讀

摘要:項目地址前后端交互時為了保證信息安全可使用方式加密信息,在數據量大的時候可采用結合方式。由于加密和解密使用同樣規則簡稱密鑰,這被稱為對稱加密算法。從那時直到現在,算法一直是最廣為使用的非對稱加密算法。

RSA-JS-PHP 項目地址rsa-js-php
前后端交互時為了保證信息安全可使用RSA方式加密信息,在數據量大的時候可采用DES+RSA結合方式。DEMO演示地址
一點歷史

1976年以前,所有的加密方法都是同一種模式:
(1)甲方選擇某一種加密規則,對信息進行加密;
(2)乙方使用同一種規則,對信息進行解密。由于加密和解密使用同樣規則(簡稱"密鑰"),這被稱為"對稱加密算法"(Symmetric-key algorithm)。
這種加密模式有一個最大弱點:甲方必須把加密規則告訴乙方,否則無法解密。保存和傳遞密鑰,就成了最頭疼的問題。
1977年,三位數學家Rivest、Shamir 和 Adleman 設計了一種算法,可以實現非對稱加密。這種算法用他們三個人的名字命名,叫做RSA算法。從那時直到現在,RSA算法一直是最廣為使用的"非對稱加密算法"。毫不夸張地說,只要有計算機網絡的地方,就有RSA算法。

算法原理

RSA算法的主要原理是利用了數論中質數的巧妙關系即歐拉定理,要實現RSA算法需找到三個具有特定關系的值,在此命名為n e d;

假設有兩個值互為質數的正整數p和q,(為了便于運算演示,取的值比較小,通常情況下是取的非常大的值,值越大破解的難度越大),p=5 q=17 即 p和q的乘積為n=5x17=85;

計算得出n的歐拉函數φ(n)=(p-1)(q-1)=64,在區間(1,64)中隨機選擇一個數e=13,,需保證e和φ(n)為互質關系;

計算e對于φ(n)的模反元素d,得出d=5;至此,已經得到了三個具有特定關系的值 n=85 e=13 d=5,設公鑰為(n,e),私鑰即為(n,d);

假設用戶發送數字3到服務端,通過RSA加密的過程為:m=(3^13) mod 85=63,mod為求模,得到密文63;

服務端收到密文m=63,解密過程為 s=(63^5) mod 85=3,最終得出原文為3;

加解密關系為 m=(s^e) mod n,s=(m^d) mod n;私鑰與公鑰可互相使用,只需要保護一個不被泄露即可;

于是私鑰泄露就意味著RSA加密失去意義;

使用方式
請確保PHP的openssl擴展開啟,且保證php在環境變量中,如果是windows需添加環境變量:名 OPENSSL_CONF,值 D:httpphpextrassslopenssl.cnf(根據openssl.cnf目錄而定);

生成新的公私鑰文件在項目根目錄命令行運行:

php rsa.php new

保護好私鑰,確保私鑰不被暴露在web可訪問目錄下;

將生成的rsa_pubkey.js引入值web項目中,具體請運行DEMO演示即可;

rsa.class.php的使用:

// 初始化參數,設置公鑰與私鑰的路徑
rsa::$prikey = "src/key/private.pem";
rsa::$pubkey = "src/key/public.pem";

// JavaScript腳本生成位置,用于重新生成公私鑰
rsa::$script = "rsa_pubkey.js";

// $model = 1 公鑰加密,私鑰解密:公開公鑰,保存私鑰
// $model = 2 私鑰加密,公鑰解密:公開私鑰,保存公鑰
rsa::$model = 1;

// RSA加密
rsa::encrypt($data);

// RSA解密
rsa::decrypt($data);

// RSA簽名
rsa::sign($data);

// RSA驗簽
rsa::verify($data, $sign);
js加密來源于開源項目jsencrypt

本文出自個人博客 最好的安排 轉載請注明出處!

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/28226.html

相關文章

  • node中密碼安全

    摘要:后端解密后端核心代碼注意要放在處理路由前不加會報錯解密注意這里的常量值要設置為加密輸入到數據庫中的密碼是存入數據庫中這里,我是用自帶模塊進行解密,當然,你也可以用的方法進行解密。 本文將講解對于前后端分離的項目,前端注冊或登錄時如何保證用戶密碼安全傳輸到server端,最終存入數據庫 為什么需要加密 加密真的有必要嗎?我們先來看一看前端發起的ajax請求中,如果不對密碼進行加密,會發生...

    Wildcard 評論0 收藏0
  • 回眸曾經項目,與第三方支付相關,所帶來溝通問題

    摘要:錢可以存儲在自己的余額中,這就相當于微信錢包,余額可以提現到銀行卡的中。我們的第三方支付平臺是連連支付,杭州的一家公司。私鑰怎么加簽每個公司的加簽方式是不一樣的,支付寶有支付寶的加簽方式,微信有微信的加簽方式。 導讀 筆者在校期間,通過自學java。學校里也開過這門課,但是,講的都是一些基礎,比如java的表達式、基本類型、自定義類型等等。也都是很基礎的東西,就連lambda表達式都沒...

    kaka 評論0 收藏0
  • 手動實現一個jsonwebtoken

    摘要:利用消息認證碼可以確保消息不是被別人偽造的,消息認證碼是帶密鑰的函數,由于有了一個,所以會比有更好的安全性。所以需要采用的就是算法,該算法主要利用的是不對稱加密算法,利用私鑰進行簽名,公鑰驗證數據的完整性。 寫在前面 本文會到你了解jwt的實現原理,以及base64編碼的原理。同時本人也簡單的實現了一下jwt的生成,點這里。 jwt是什么 本質上它是一段簽名的 JSON 格式的數據。由...

    zhangke3016 評論0 收藏0
  • Swoole 源碼分析——Server模塊之OpenSSL (上)

    摘要:另一方比如小明得到公鑰之后,雙方就可以通信。然而,中間人還是可能截獲公鑰,然后自己弄一對秘鑰,然后告訴小明說是小紅的公鑰。這樣,小亮在簽署小紅的身份證的時候,可以在小紅身份證后面附上自己的身份證。一般來說,自簽名的根身份證用于公司內部使用。 前言 自從 Lets Encrypt 上線之后,HTTPS 網站數量占比越來越高,相信不久的未來就可以實現全網 HTTPS,大部分主流瀏覽器也對 ...

    ky0ncheng 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<