如何用RSA加密算法給文件加密

最早、最著名的保密密鑰或?qū)ΨQ密鑰加密算法DES(Data Encryption Standard)是由IBM公司在70年代發(fā)展起來的,并經(jīng)政府的加密標(biāo)準(zhǔn)篩選后,于1976年11月被美國政府采用,DES隨后被美國國家標(biāo)準(zhǔn)局和美國國家標(biāo)準(zhǔn)協(xié)會(American National Standard Institute,ANSI)承認(rèn)。

DES加密算法:

DES使用56位密鑰對64位的數(shù)據(jù)塊進(jìn)行加密,并對64位的數(shù)據(jù)塊進(jìn)行16輪編碼。與每輪編碼時(shí),一個(gè)48位的"每輪"密鑰值由56位的完整密鑰得出來。DES用軟件進(jìn)行解碼需用很長時(shí)間,而用硬件解碼速度非???。幸運(yùn)的是,當(dāng)時(shí)大多數(shù)黑客并沒有足夠的設(shè)備制造出這種硬件設(shè)備。在1977年,人們估計(jì)要耗資兩千萬美元才能建成一個(gè)專門計(jì)算機(jī)用于DES的解密,而且需要12個(gè)小時(shí)的破解才能得到結(jié)果。當(dāng)時(shí)DES被認(rèn)為是一種十分強(qiáng)大的加密方法。

隨著計(jì)算機(jī)硬件的速度越來越快,制造一臺這樣特殊的機(jī)器的花費(fèi)已經(jīng)降到了十萬美元左右,而用它來保護(hù)十億美元的銀行,那顯然是不夠保險(xiǎn)了。另一方面,如果只用它來保護(hù)一臺普通服務(wù)器,那么DES確實(shí)是一種好的辦法,因?yàn)楹诳徒^不會僅僅為入侵一個(gè)服務(wù)器而花那么多的錢破解DES密文。

RSA加密算法:

另一種非常著名的加密算法就是RSA了,RSA(Rivest-Shamir-Adleman)算法是基于大數(shù)不可能被質(zhì)因數(shù)分解假設(shè)的公鑰體系。簡單地說就是找兩個(gè)很大的質(zhì)數(shù)。一個(gè)對外公開的為“公鑰”(Prblic key) ,另一個(gè)不告訴任何人,稱為"私鑰”(Private key)。這兩個(gè)密鑰是互補(bǔ)的,也就是說用公鑰加密的密文可以用私鑰解密,反過來也一樣。

實(shí)例分析兩種加密算法:

假設(shè)用戶甲要把一個(gè)機(jī)密文件發(fā)送給用戶乙,他們互相知道對方的公鑰。甲就用乙的公鑰把文件加密后寄出,乙收到后就可以用自己的私鑰把加密文件解密出甲的原文。由于別人不知道乙的私鑰,所以即使是甲本人也無法解密那個(gè)文件,這就解決了文件的保密的問題。另一方面,由于每個(gè)人都知道乙的公鑰,他們都可以給乙發(fā)文件,那么乙怎么確信是不是甲的發(fā)來的文件呢?那就要用到基于加密技術(shù)的數(shù)字簽名了。

甲用自己的私鑰將簽名內(nèi)容加密,附加在文件后,再用乙的公鑰將整個(gè)文件加密(注意這里的次序,如果先加密再簽名的話,別人可以將簽名去掉后簽上自己的簽名,從而篡改了簽名)。這樣這個(gè)加密文件被乙收到以后,乙用自己的私鑰將文件解密,得到甲的原文和數(shù)字簽名,然后用甲的公鑰解密簽名,這樣一來就可以確保兩方面的安全了。

小知識之密鑰:密鑰是一種參數(shù),它是在明文轉(zhuǎn)換為密文或?qū)⒚芪霓D(zhuǎn)換為明文的算法中輸入的數(shù)據(jù)。