“對(duì)稱加密算法”模式:
甲方和乙方協(xié)商好一種規(guī)則,甲方用這套規(guī)則進(jìn)行加密俯萌。而乙方則用這套規(guī)則進(jìn)行解密果录。
這種算法模式很容易理解,例如電影咐熙、電視劇等可以常見的摩斯密碼弱恒,這種模式的缺點(diǎn)較為明顯的是只要懂這套規(guī)則的人都能輕松解密。
“RSA加密算法”模式就是為了解決這樣尷尬的局面而誕生的棋恼。
1976年返弹,美國(guó)計(jì)算機(jī)學(xué)家Whitfield Diffie 和 Martin Hellman提出了"Diffie-Hellman密鑰交換算法"锈玉,這種算法能在“不直接”傳遞秘鑰的情況下完成解密。
我們假設(shè)我們加密的內(nèi)容為 X义起;
原理舉例:
13 * 77 = 1001
1001 % 1000 = 1
1001 = 1 (mod 1000)
1001 * X = X (mod 1000)
(1001 * X) %1000 = X
[13 * X * 77] % 1000 = X
{[(13 * X) % 1000] * 77} % 1000 =X
這個(gè)時(shí)候拉背,我們?cè)偌僭O(shè)我們有一個(gè)數(shù)字 666 需要再“不直接”傳遞秘鑰的情況下完成加密和解密的動(dòng)作將會(huì)發(fā)生如下 <1> 過程:
甲方加密(秘鑰:13):
666 * 13 = 8 658;
8658 % 1000 = 658默终;
甲方傳遞(公鑰:658):
658
乙方解密(秘鑰:77):
658 * 77 = 50 666椅棺;
50666 % 1000 = 666;
RSA就是通過 類似 上述的方式齐蔽,在不直接傳遞秘鑰的情況下完成加密和解密的動(dòng)作两疚。
當(dāng)然臣嚣,這種算法在第一步是取的兩個(gè)數(shù)是有前提的擦盾,如果隨便取就會(huì)菩颖。枫夺。熄诡。
2 * 6 = 12
12 % 10 = 2
3 * X * 4 = 2 * X (mod 10);
{[(3 * X) % 10] * 4} % 10 =X
我們?nèi)?66試試:
3 * 666 = 1 998
1998 % 10 = 8
8 * 4 = 32
32 % 10 = 2
// WowI骜@逑摺奄毡!發(fā)生了什么
該算法的前提是中國(guó)剩余定理:
原理理解:
假設(shè)一個(gè)數(shù)X 鸦做,已知:
X % 7 = 6;
X % 5 = 3;
通過上面的條件我們能否知道X的值呢励烦?
X ... 13 ... 20 ... 27 ... 34 ... 41 ... 48
%7 6 6 6 6 6 6
%5 3 0 2 4 1 3
答案是否定的,
我們會(huì)發(fā)現(xiàn)13符合條件,48符合條件泼诱,后面是以 13+(5*7)n 為周期的循環(huán)坛掠,
也就是說對(duì)于上述的%操作并不能確定唯一的值與之對(duì)應(yīng)。
所以治筒,我們確定一個(gè)數(shù)還需要一個(gè)條件屉栓,那就是限定取值范圍。
我們可以發(fā)現(xiàn)(X%7 和 X%5)在 [0,57]的區(qū)間內(nèi)是不會(huì)重復(fù)的耸袜,
而上面的秘鑰2友多、6顯然不足以確定一個(gè)比 26 大的多的數(shù),
因此堤框,我們?cè)谶x擇加密的內(nèi)容時(shí)是需要限定內(nèi)容區(qū)間的域滥。
還要強(qiáng)調(diào)一點(diǎn)(中國(guó)剩余定理的前提條件),
這兩個(gè)數(shù)必須還是互質(zhì)關(guān)系(兩個(gè)正整數(shù)蜈抓,除了1以外启绰,沒有其他公因子)
比如說下面的情況是不成立的,
已知:
X % 4 = 1;
X % 2 = 1;
范圍:[ 0 , 8 ]
結(jié)果:1 和 5 均滿足條件沟使,不能確定唯一的數(shù)值
下面開始進(jìn)入正題
設(shè) :
P 和 Q 為兩個(gè)互不相同且差值較大的大素?cái)?shù)委可,
N = P * Q
D 和 E 為私鑰
T = ( P - 1)( Q - 1)
i : 是正整數(shù)變量 ( 1, 2, 3, 4, 5, ...)
先了解一下費(fèi)馬小定理的結(jié)論:
1、如果n是一個(gè)質(zhì)數(shù)腊嗡,對(duì)于任意的a有an - a = n的倍數(shù)
那么着倾,由
an - a = n的倍數(shù) ===>
an - a = 0 ( mod n ) =>
an % n = a % n
另一種說法是拾酝,對(duì)于任意的 a,隨著 i 的增加屈呕,ai % n 呈長(zhǎng)度為 n - 1 的周期性微宝;
2、給出兩個(gè)質(zhì)數(shù) P 和 Q虎眨,其乘積為 N蟋软,
那么隨著 i 的增加,Xi % N 呈現(xiàn)周期為 ( P - 1)( Q - 1) 的循環(huán)嗽桩。
由上述結(jié)論可得:
X % N = X iT+1 % N
接著我們用私鑰 D 和 E 等價(jià)于上式
X % N = XDE % N
( 即 DE % T = 1)
而且岳守,因?yàn)?X < N,則有:
X = XDE % N
那么我們可以得到加密和解密的公式如下:
X = ( XD % N )E % N