rsa加密算法及js的JSEncrypt實現前端加密


最近的項目中用到了rsa加密算法,在實現了相關功能之后,我去了解了一下rsa相關原理,於是就寫了這篇博客啦。

首先介紹一下什么是rsa加密算法

作為非對稱加密算法的老大,rsa號稱是地球上最安全的加密算法。

 首先了解一些數學背景(我發現我真的好喜歡看數學概念0.0),這里就不再贅訴相關數學背景了,但是請務必要理解這些概念,貼一個我覺着講得特別清晰的概念,便於理解:

https://blog.csdn.net/u014044812/article/details/80782448

然后介紹一下rsa密鑰生成過程:

1.隨機選兩個不等的質數p和q:

實際應用中如果這兩個質數越大就越難破解

 2.計算p和q的乘積n

n=p*q
n的長度就是密鑰長度,然后把n寫成二進制,共有多少位,這個密鑰就有多少位,
在一般場景中rsa密鑰一般是1024位,重要場合位2048位

 3.計算n的歐拉函數φ(n)

4.隨機選擇一個整數e,條件是1<e<φ(n),且e與φ(n)互質

5.計算e對於φ(n)的模反元素d

ed-kφ(n)=1

 

(可以利用輾轉相除法求的d元素,)

按照公式,d=x=-367,但是一般取正整數,然后d加減φ(n)的n倍都是e的模反元素

所以取d=d+kφ(n)=-367+1x3120=2753

 

6.將n和e封裝成公鑰,n和d封裝成私鑰

公鑰:(n,e) 

私鑰:(n,d)

 

利用JSEncrypt實現的整個加密過程,具體實現可以看看

https://github.com/travist/jsencrypt

我司現在后端用java實現的解密過程,我現在在前端實現加密過程,列舉部分代碼

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM