成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

利用RSA對(duì)前后端加密的探索

banana_pi / 716人閱讀

摘要:項(xiàng)目地址前后端交互時(shí)為了保證信息安全可使用方式加密信息,在數(shù)據(jù)量大的時(shí)候可采用結(jié)合方式。由于加密和解密使用同樣規(guī)則簡(jiǎn)稱密鑰,這被稱為對(duì)稱加密算法。從那時(shí)直到現(xiàn)在,算法一直是最廣為使用的非對(duì)稱加密算法。

RSA-JS-PHP 項(xiàng)目地址rsa-js-php
前后端交互時(shí)為了保證信息安全可使用RSA方式加密信息,在數(shù)據(jù)量大的時(shí)候可采用DES+RSA結(jié)合方式。DEMO演示地址
一點(diǎn)歷史

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

算法原理

RSA算法的主要原理是利用了數(shù)論中質(zhì)數(shù)的巧妙關(guān)系即歐拉定理,要實(shí)現(xiàn)RSA算法需找到三個(gè)具有特定關(guān)系的值,在此命名為n e d;

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

計(jì)算得出n的歐拉函數(shù)φ(n)=(p-1)(q-1)=64,在區(qū)間(1,64)中隨機(jī)選擇一個(gè)數(shù)e=13,,需保證e和φ(n)為互質(zhì)關(guān)系;

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

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

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

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

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

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

生成新的公私鑰文件在項(xiàng)目根目錄命令行運(yùn)行:

php rsa.php new

保護(hù)好私鑰,確保私鑰不被暴露在web可訪問(wèn)目錄下;

將生成的rsa_pubkey.js引入值web項(xiàng)目中,具體請(qǐng)運(yùn)行DEMO演示即可;

rsa.class.php的使用:

// 初始化參數(shù),設(shè)置公鑰與私鑰的路徑
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驗(yàn)簽
rsa::verify($data, $sign);
js加密來(lái)源于開源項(xiàng)目jsencrypt

本文出自個(gè)人博客 最好的安排 轉(zhuǎn)載請(qǐng)注明出處!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/28226.html

相關(guān)文章

  • node中密碼安全

    摘要:后端解密后端核心代碼注意要放在處理路由前不加會(huì)報(bào)錯(cuò)解密注意這里的常量值要設(shè)置為加密輸入到數(shù)據(jù)庫(kù)中的密碼是存入數(shù)據(jù)庫(kù)中這里,我是用自帶模塊進(jìn)行解密,當(dāng)然,你也可以用的方法進(jìn)行解密。 本文將講解對(duì)于前后端分離的項(xiàng)目,前端注冊(cè)或登錄時(shí)如何保證用戶密碼安全傳輸?shù)絪erver端,最終存入數(shù)據(jù)庫(kù) 為什么需要加密 加密真的有必要嗎?我們先來(lái)看一看前端發(fā)起的ajax請(qǐng)求中,如果不對(duì)密碼進(jìn)行加密,會(huì)發(fā)生...

    Wildcard 評(píng)論0 收藏0
  • 回眸曾經(jīng)項(xiàng)目,與第三方支付相關(guān),所帶來(lái)溝通問(wèn)題

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

    kaka 評(píng)論0 收藏0
  • 手動(dòng)實(shí)現(xiàn)一個(gè)jsonwebtoken

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

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

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

    ky0ncheng 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<