RSA加密算法

首先,?找出三個(gè)數(shù),?p,?q,?r,

其中?p,?q?是兩個(gè)相異的質(zhì)數(shù),?r?是與?(p-1)(q-1)?互質(zhì)的數(shù)......

p,?q,?r?這三個(gè)數(shù)便是?private?key

 

接著,?找出?m,?使得?rm?==?1?mod?(p-1)(q-1).....

這個(gè)?m?一定存在,?因?yàn)?r?與?(p-1)(q-1)?互質(zhì),?用輾轉(zhuǎn)相除法就可以得到了.....

再來(lái),?計(jì)算?n?=?pq.......

m,?n?這兩個(gè)數(shù)便是?public?key

 

編碼過(guò)程是,?若資料為?a,?將其看成是一個(gè)大整數(shù),?假設(shè)?a?<?n....

如果?a?>=?n?的話,?就將?a?表成?s?進(jìn)位?(s?<=?n,?通常取?s?=?2^t),

則每一位數(shù)均小於?n,?然後分段編碼......

接下來(lái),?計(jì)算?b?==?a^m?mod?n,?(0?<=?b?<?n),

b?就是編碼後的資料......

 

解碼的過(guò)程是,?計(jì)算?c?==?b^r?mod?pq?(0?<=?c?<?pq),

於是乎,?解碼完畢......?等會(huì)會(huì)證明?c?和?a?其實(shí)是相等的??:)

 

如果第三者進(jìn)行竊聽(tīng)時(shí),?他會(huì)得到幾個(gè)數(shù):?m,?n(=pq),?b......

他如果要解碼的話,?必須想辦法得到?r......

所以,?他必須先對(duì)?n?作質(zhì)因數(shù)分解.........

要防止他分解,?最有效的方法是找兩個(gè)非常的大質(zhì)數(shù)?p,?q,

使第三者作因數(shù)分解時(shí)發(fā)生困難.........

 

 

<定理>

若?p,?q?是相異質(zhì)數(shù),?rm?==?1?mod?(p-1)(q-1),

a?是任意一個(gè)正整數(shù),?b?==?a^m?mod?pq,?c?==?b^r?mod?pq,

則?c?==?a?mod?pq

 

證明的過(guò)程,?會(huì)用到費(fèi)馬小定理,?敘述如下:

m?是任一質(zhì)數(shù),?n?是任一整數(shù),?則?n^m?==?n?mod?m

(換另一句話說(shuō),?如果?n?和?m?互質(zhì),?則?n^(m-1)?==?1?mod?m)

運(yùn)用一些基本的群論的知識(shí),?就可以很容易地證出費(fèi)馬小定理的........

 

<證明>

因?yàn)?rm?==?1?mod?(p-1)(q-1),?所以?rm?=?k(p-1)(q-1)?+?1,?其中?k?是整數(shù)

因?yàn)樵?modulo?中是?preserve?乘法的

(x?==?y?mod?z??and??u?==?v?mod?z??=>??xu?==?yv?mod?z),

所以,?c?==?b^r?==?(a^m)^r?==?a^(rm)?==?a^(k(p-1)(q-1)+1)?mod?pq

 

  1. 如果?a?不是?p?的倍數(shù),?也不是?q?的倍數(shù)時(shí),

則?a^(p-1)?==?1?mod?p?(費(fèi)馬小定理)??=>??a^(k(p-1)(q-1))?==?1?mod?p

a^(q-1)?==?1?mod?q?(費(fèi)馬小定理)??=>??a^(k(p-1)(q-1))?==?1?mod?q

所以?p,?q?均能整除?a^(k(p-1)(q-1))?-?1??=>??pq?|?a^(k(p-1)(q-1))?-?1

即?a^(k(p-1)(q-1))?==?1?mod?pq

=>??c?==?a^(k(p-1)(q-1)+1)?==?a?mod?pq

 

  1. 如果?a?是?p?的倍數(shù),?但不是?q?的倍數(shù)時(shí),

則?a^(q-1)?==?1?mod?q?(費(fèi)馬小定理)

=>??a^(k(p-1)(q-1))?==?1?mod?q

=>??c?==?a^(k(p-1)(q-1)+1)?==?a?mod?q

=>??q?|?c?-?a

因?p?|?a

=>??c?==?a^(k(p-1)(q-1)+1)?==?0?mod?p

=>??p?|?c?-?a

所以,?pq?|?c?-?a??=>??c?==?a?mod?pq

 

  1. 如果?a?是?q?的倍數(shù),?但不是?p?的倍數(shù)時(shí),?證明同上

 

  1. 如果?a?同時(shí)是?p?和?q?的倍數(shù)時(shí),

則?pq?|?a

=>??c?==?a^(k(p-1)(q-1)+1)?==?0?mod?pq

=>??pq?|?c?-?a

=>??c?==?a?mod?pq

Q.E.D.