RSA算法加密流程
RSA加密原理
大整數因數分解困難問題
RSA算法就是利用大整數分解困難問題而設計 限門單向函數實現公鑰密碼算法
預備知識
質數
互質是公約數只有1的兩個整數,叫做互質整數。
質數是指在大于1的自然數中,除了1和它本身以外不再有其他因數的自然數
歐拉函數
模反元素
如果兩個正整數e和φ(n)互質,那么一定可以找到整數d,使得 ed-1 被φ(n)整除,或者說ed被φ(n)除的余數是1。這時,d就叫做e的“模反元素”。
edmodφ(n)=1
正式的算法加密步驟
① 選兩個安全的大素數p和q。
② 計算n=p×q,φ(n)=(p-1)(q-1),其中φ(n)是n的歐拉函數值。
③ 選一整數e,滿足1<e<φ(n),且gcd(φ(n),e)=1。
④ 計算d,滿足d·e≡1 mod φ(n),即d是e在模φ(n)下的乘法逆元,因e與φ(n)互素,由模運算可知,它的乘法逆元一定存在。(一般公鑰取值為65537(216+1))
⑤ 以{e,n}為公開密鑰(PK),{d,n}為秘密密鑰(SK)。
?
注意由e計算d需要使用p和q,但是密碼破譯者并不知道p和q,因此不可能通過和生成密鑰對時相同的計算方法來求出d。
對于RSA來說,有一點很重要,那就是質數p和q不能被密碼破譯者知道。把p和q交給密碼破譯者與把私鑰交給密碼破譯者是等價的。
總結
- 上一篇: DES算法C语言实现
- 下一篇: 差分能量分析介绍(一)