RSA加密算法被廣泛應(yīng)用于數(shù)字簽名等領(lǐng)域
在計算機信息傳遞中,信息發(fā)送方甲方,為了保護傳輸?shù)拿魑男畔⒉槐坏谌礁`取,采用一個密鑰A對要發(fā)送的信息進行加密而形成密文M并且發(fā)送給乙方,信息的接收方-乙方用另一把密鑰B對密文M解密,得到明文消息,從而完成密文通訊。密鑰A和密鑰B是采用事先商定的某種計算機算法產(chǎn)生的密鑰對,其中密鑰A為用戶私有,密鑰B對網(wǎng)絡(luò)上的大眾是公開的,這種安全機制被稱為公開密鑰加密,公開密鑰加密算法又叫非對稱密鑰加密算法,RSA加密算法就是其中最流行的一種,被廣泛應(yīng)用于簡短信息加密和數(shù)字簽名等領(lǐng)域。
一、RSA加密算法簡介
RSA加密算法誕生于1978年,是以三位發(fā)明人的名字(Rivest,Shamir和Adleman)首字母命名的,它是利用質(zhì)數(shù)因子分解的困難性開發(fā)的算法,其保密強度是建立在計算的復(fù)雜性的基礎(chǔ)之上的。RSA應(yīng)用中要求每一個用戶擁有自己的一種密鑰:公開的加密密鑰,用于加密明文;保密的解密密鑰,用于解密密文。
二、RSA加密算法原理
RSA公開密鑰加密算法的基本原理是:
(一)產(chǎn)生密鑰對
首先,選擇兩個大質(zhì)數(shù),p 和q,計算:
n = p * q
然后,隨機選擇加密密鑰e,要求 e 和 ( p - 1 ) * ( q - 1 ) 互質(zhì),且0 < e < ( p - 1 ) * ( q - 1 )。
最后,計算解密密鑰d, 要求滿足:
e * d = 1 ( mod ( p - 1 ) * ( q - 1 ) )
其中n和d也要互質(zhì)。數(shù)e和 n是公鑰,用于加密信息,對所有使用者公開;數(shù)d和n是私鑰,用于解密信息,用戶自己保存。
(二)加密
信息發(fā)送者取得對方的公鑰e和 n后,對發(fā)送的明文信息m進行加密運算可獲得加密信息c,對應(yīng)的密文計算方法是:
c = me mod n
然后通過通信渠道把密文信息c傳遞給信息接收者。
(三)解密
信息接收者接收到密文信息c后,采用自己掌握的私鑰d和n進行解密獲取明文信息m,對應(yīng)的解密運算方法是:
m = cd mod n
由于RSA加密算法速度較慢,通常適用于對少量數(shù)據(jù)的加密,所以在加密明文信息 m時,首先把m分成等長數(shù)據(jù)塊m1,m2,...,mi ,然后分別對m1,m2,..., mi進行加密,即m = m1m2... mi,c = c1c2... ci ,解密時也是如此。
三、RSA加密算法應(yīng)用
RSA加密算法除了用于少量數(shù)據(jù)加密之外,最主要的應(yīng)用就是數(shù)字簽名。數(shù)字簽名是通過密碼運算生成一組符號及代碼,用于鑒定簽名人的身份以及對電子數(shù)據(jù)內(nèi)容的認可,它還能驗證出文件的原文在傳輸過程中有無變動,確保傳輸電子文件的完整性、真實性和不可抵賴性。
(一)數(shù)字簽名的原理
被發(fā)送的文件用SHA編碼加密產(chǎn)生128bit的數(shù)字摘要;發(fā)送方用自己的私有密鑰對摘要再加密,形成數(shù)字簽名;將原文和加密的摘要同時傳給對方;對方用發(fā)送方的公共密鑰對摘要解密,同時對收到的文件用SHA編碼加密產(chǎn)生又一摘要;將解密后的摘要和重新用SHA編碼加密收到的文件所產(chǎn)生的摘要相互對比。
(二)數(shù)字簽名運算
數(shù)字簽名使用者首先采用SHA編碼法對欲簽名的文件信息m進行數(shù)字摘要運算,得出摘要值h(m),再用自己掌握的私鑰d和n進行簽名運算,可獲得數(shù)字簽名s,之后將數(shù)字簽名s和文件信息m一起發(fā)送給對方。
RSA加密算法是被研究得最廣泛的公鑰算法,易于理解和操作,可同時用于加密和數(shù)字簽名,從提出到現(xiàn)在已近三十年,經(jīng)歷了各種攻擊的考驗,逐漸為人們接受,盡管存在一些瑕疵,但還是被普遍認為是目前最優(yōu)秀的公鑰方案之一。在電子商務(wù)應(yīng)用系統(tǒng)中,RSA加密算法更是慣用的技術(shù)之一。
小知識之公開密鑰:
公開密鑰也稱為非對稱密鑰,每個人都有一對唯一對應(yīng)的密鑰:公開密鑰(簡稱公鑰)和私人密鑰(簡稱私鑰),公鑰對外公開,私鑰由個人秘密保存;用其中一把密鑰加密,就只能用另一把密鑰解密。非對稱密鑰加密算法的典型代表是RSA。










