爬蟲 RSA加密演演算法

2021-09-26 04:28:34 字數 1008 閱讀 8392

公鑰與金鑰的產生

假設alice想要通過乙個不可靠的**接受bob的一條私人訊息。她可以用以下的方式來產生乙個公鑰和乙個私鑰:

隨意選擇兩個大的質數p和q,p不等於q,計算n=pq

根據尤拉函式(r = φ(n),其中r是小於或等於n的正整數中與n

互質的數的數目),求得r= φ(n) = φ(p)φ(q) = (p-1)(q-1)

選擇乙個小於r的整數e,求得e關於模r的模反元素,命名為d。所謂模反元素,即有這麼乙個整數d可以使得e×d≡1 mod r,相當於e×d = k×

r+1。相當於對乙個二元一次方程求解,即相當於計算ax+by=1,求解這個式子需要計算e和r的最小公約數相似原理的擴充套件歐幾里得演算法進行求解(計算)。可以參看維基百科的內容:擴充套件歐幾里得演算法。

將p和q的記錄銷毀

[n, e]是公鑰,[n, d]是私鑰。alice將公鑰[n, e]傳給bob,而將她的私鑰[n, d]藏起來。

----------------------------

alice選擇的兩個質數分別為:p=17,q=23。則n=17×23=391。

r= φ(n) = φ(p)φ(q) = (p-1)(q-1)  [p.s. 這裡由於p是質數,當然小於p的與p互質的數是p-1個

] 。得到r=368。

選擇乙個小於r的整數e=19,r=368,最大公約數為:相當於解乙個二元一次方程:19x+368y=1 。通過歐幾里得計算過程:

公鑰是[n,e]=[391,19], 私鑰就是[n,d]=[391, 155]

可是這樣子,為什麼私鑰可以保密呢?我們已知的是引數有 n和e,未知的引數有p,q,r,d,k。

如果要破解必須要私鑰d,而如果只知道公鑰要怎麼計算得到私鑰呢?我們要求解方程e×d = k×

r+1則必須要知道r,而知道r必須要知道p和q。知道p和q必須要將n進行因式分解。

大整數的因式分解是一件極其麻煩的事情,必須用暴力拆解。即使在知道因數就是質數的情況下,因為n可能會是幾百位上千位的。

快速演演算法

package paul title 快速演演算法 description 快速排序法的基本精神是在?盜兄姓頁鯗m?的?s心,然後?盜幸環?槎?分?e?筮?c右?盜羞m行排序,而影?快速排序法效率的正是?s心的?x?瘛?下面介紹了三種方法,從理論分析效率遞增,但是沒有用大陣列來進行測試 author...

Bresenham直線演演算法

法,它會算出一條線段在 n 維光柵上最接近的點。這個演演算法只會用到較為快速的整數加法 減法和位元移位,常用於繪製電腦畫面中的直線。是計算機圖形學中最先發展出來的演演算法。經過少量的延伸之後,原本用來畫直線的演演算法也可用來畫圓。且同樣可用較簡單的算術運算來完成,避免了計算二次方程式或三角函式,或遞...

谷歌推出演演算法,加快AI邊緣裝置效能

谷歌推出efficientnet edgetpu演演算法,加快ai邊緣裝置效能。efficientnet edgetpu是針對coral dev board,tinker edge t等搭載edge tpu張量處理器進行最佳化的演演算法,能提公升神經網路運算效能達10倍,對運算能量有限的邊緣裝置來說...