[轉(zhuǎn)]常用加密算法概述

一. 簡述

常見的加密算法可以分成三類罐韩,對(duì)稱加密算法憾赁,非對(duì)稱加密算法和Hash算法。

對(duì)稱加密
指加密和解密使用相同密鑰的加密算法散吵。對(duì)稱加密算法的優(yōu)點(diǎn)在于加解密的高速度和使用長密鑰時(shí)的難破解性龙考。假設(shè)兩個(gè)用戶需要使用對(duì)稱加密方法加密然后交換數(shù)據(jù),則用戶最少需要2個(gè)密鑰并交換使用矾睦,如果企業(yè)內(nèi)用戶有n個(gè)晦款,則整個(gè)企業(yè)共需要n×(n-1) 個(gè)密鑰,密鑰的生成和分發(fā)將成為企業(yè)信息部門的惡夢枚冗。對(duì)稱加密算法的安全性取決于加密密鑰的保存情況缓溅,但要求企業(yè)中每一個(gè)持有密鑰的人都保守秘密是不可能的,他們通常會(huì)有意無意的把密鑰泄漏出去——如果一個(gè)用戶使用的密鑰被入侵者所獲得赁温,入侵者便可以讀取該用戶密鑰加密的所有文檔坛怪,如果整個(gè)企業(yè)共用一個(gè)加密密鑰,那整個(gè)企業(yè)文檔的保密性便無從談起股囊。

常見的對(duì)稱加密算法:DES袜匿、3DES、DESX稚疹、Blowfish居灯、IDEA、RC4贫堰、RC5穆壕、RC6和AES

非對(duì)稱加密
指加密和解密使用不同密鑰的加密算法,也稱為公私鑰加密其屏。假設(shè)兩個(gè)用戶要加密交換數(shù)據(jù)喇勋,雙方交換公鑰,使用時(shí)一方用對(duì)方的公鑰加密偎行,另一方即可用自己的私鑰解密川背。如果企業(yè)中有n個(gè)用戶贰拿,企業(yè)需要生成n對(duì)密鑰,并分發(fā)n個(gè)公鑰熄云。由于公鑰是可以公開的膨更,用戶只要保管好自己的私鑰即可,因此加密密鑰的分發(fā)將變得十分簡單缴允。同時(shí)荚守,由于每個(gè)用戶的私鑰是唯一的,其他用戶除了可以可以通過信息發(fā)送者的公鑰來驗(yàn)證信息的來源是否真實(shí)练般,還可以確保發(fā)送者無法否認(rèn)曾發(fā)送過該信息矗漾。非對(duì)稱加密的缺點(diǎn)是加解密速度要遠(yuǎn)遠(yuǎn)慢于對(duì)稱加密,在某些極端情況下薄料,甚至能比非對(duì)稱加密慢上1000倍敞贡。

常見的非對(duì)稱加密算法:RSA、ECC(移動(dòng)設(shè)備用)摄职、Diffie-Hellman誊役、El Gamal、DSA(數(shù)字簽名用)

Hash算法
Hash算法特別的地方在于它是一種單向算法谷市,用戶可以通過Hash算法對(duì)目標(biāo)信息生成一段特定長度的唯一的Hash值蛔垢,卻不能通過這個(gè)Hash值重新獲得目標(biāo)信息。因此Hash算法常用在不可還原的密碼存儲(chǔ)迫悠、信息完整性校驗(yàn)等啦桌。

常見的Hash算法:MD2、MD4及皂、MD5、HAVAL且改、SHA验烧、SHA-1、HMAC又跛、HMAC-MD5碍拆、HMAC-SHA1

加密算法的效能通常可以按照算法本身的復(fù)雜程度慨蓝、密鑰長度(密鑰越長越安全)感混、加解密速度等來衡量。上述的算法中礼烈,除了DES密鑰長度不夠弧满、MD2速度較慢已逐漸被淘汰外,其他算法仍在目前的加密系統(tǒng)產(chǎn)品中使用此熬。

加密算法的選擇
前面的章節(jié)已經(jīng)介紹了對(duì)稱解密算法和非對(duì)稱加密算法庭呜,有很多人疑惑:那我們在實(shí)際使用的過程中究竟該使用哪一種比較好呢滑进?

我們應(yīng)該根據(jù)自己的使用特點(diǎn)來確定,由于非對(duì)稱加密算法的運(yùn)行速度比對(duì)稱加密算法的速度慢很多募谎,當(dāng)我們需要加密大量的數(shù)據(jù)時(shí)扶关,建議采用對(duì)稱加密算法,提高加解密速度数冬。

對(duì)稱加密算法不能實(shí)現(xiàn)簽名节槐,因此簽名只能非對(duì)稱算法。

由于對(duì)稱加密算法的密鑰管理是一個(gè)復(fù)雜的過程拐纱,密鑰的管理直接決定著他的安全性铜异,因此當(dāng)數(shù)據(jù)量很小時(shí),我們可以考慮采用非對(duì)稱加密算法戳玫。

在實(shí)際的操作過程中熙掺,我們通常采用的方式是:采用非對(duì)稱加密算法管理對(duì)稱算法的密鑰,然后用對(duì)稱加密算法加密數(shù)據(jù)咕宿,這樣我們就集成了兩類加密算法的優(yōu)點(diǎn)币绩,既實(shí)現(xiàn)了加密速度快的優(yōu)點(diǎn),又實(shí)現(xiàn)了安全方便管理密鑰的優(yōu)點(diǎn)府阀。

如果在選定了加密算法后缆镣,那采用多少位的密鑰呢?一般來說试浙,密鑰越長董瞻,運(yùn)行的速度就越慢,應(yīng)該根據(jù)的我們實(shí)際需要的安全級(jí)別來選擇田巴,一般來說钠糊,RSA建議采用1024位的數(shù)字,ECC建議采用160位壹哺,AES采用128為即可抄伍。

二.加密算法介紹

對(duì)稱加密算法

對(duì)稱加密算法用來對(duì)敏感數(shù)據(jù)等信息進(jìn)行加密,常用的算法包括:

  1. DES(Data Encryption Standard):數(shù)據(jù)加密標(biāo)準(zhǔn)管宵,速度較快截珍,適用于加密大量數(shù)據(jù)的場合。

  2. 3DES(Triple DES):是基于DES箩朴,對(duì)一塊數(shù)據(jù)用三個(gè)不同的密鑰進(jìn)行三次加密岗喉,強(qiáng)度更高。

  3. AES(Advanced Encryption Standard):高級(jí)加密標(biāo)準(zhǔn)炸庞,是下一代的加密算法標(biāo)準(zhǔn)钱床,速度快,安全級(jí)別高燕雁;

非對(duì)稱算法

RSA:由 RSA 公司發(fā)明诞丽,是一個(gè)支持變長密鑰的公共密鑰算法鲸拥,需要加密的文件塊的長度也是可變的;

  1. DSA(Digital Signature Algorithm):數(shù)字簽名算法僧免,是一種標(biāo)準(zhǔn)的 DSS(數(shù)字簽名標(biāo)準(zhǔn))刑赶;

  2. ECC(Elliptic Curves Cryptography):橢圓曲線密碼編碼學(xué)。

ECC和RSA相比懂衩,在許多方面都有對(duì)絕對(duì)的優(yōu)勢撞叨,主要體現(xiàn)在以下方面:

  1. 抗攻擊性強(qiáng)。相同的密鑰長度浊洞,其抗攻擊性要強(qiáng)很多倍牵敷。
  2. 計(jì)算量小,處理速度快法希。ECC總的速度比RSA枷餐、DSA要快得多。
  3. 存儲(chǔ)空間占用小苫亦。ECC的密鑰尺寸和系統(tǒng)參數(shù)與RSA毛肋、DSA相比要小得多,意味著它所占的存貯空間要小得多屋剑。這對(duì)于加密算法在IC卡上的應(yīng)用具有特別重要的意義润匙。
  4. 帶寬要求低。當(dāng)對(duì)長消息進(jìn)行加解密時(shí)唉匾,三類密碼系統(tǒng)有相同的帶寬要求孕讳,但應(yīng)用于短消息時(shí)ECC帶寬要求卻低得多。帶寬要求低使ECC在無線網(wǎng)絡(luò)領(lǐng)域具有廣泛的應(yīng)用前景巍膘。

散列算法

散列是信息的提煉厂财,通常其長度要比信息小得多,且為一個(gè)固定長度峡懈。加密性強(qiáng)的散列一定是不可逆的蟀苛,這就意味著通過散列結(jié)果,無法推出任何部分的原始信息逮诲。任何輸入信息的變化,哪怕僅一位幽告,都將導(dǎo)致散列結(jié)果的明顯變化梅鹦,這稱之為雪崩效應(yīng)。散列還應(yīng)該是防沖突的冗锁,即找不出具有相同散列結(jié)果的兩條信息齐唆。具有這些特性的散列結(jié)果就可以用于驗(yàn)證信息是否被修改。

單向散列函數(shù)一般用于產(chǎn)生消息摘要冻河,密鑰加密等箍邮,常見的有:

  1. MD5(Message Digest Algorithm 5):是RSA數(shù)據(jù)安全公司開發(fā)的一種單向散列算法茉帅,非可逆,相同的明文產(chǎn)生相同的密文锭弊。
  2. SHA(Secure Hash Algorithm):可以對(duì)任意長度的數(shù)據(jù)運(yùn)算生成一個(gè)160位的數(shù)值堪澎;

SHA-1與MD5的比較

因?yàn)槎呔蒑D4導(dǎo)出,SHA-1和MD5彼此很相似味滞。相應(yīng)的樱蛤,他們的強(qiáng)度和其他特性也是相似,但還有以下幾點(diǎn)不同:

對(duì)強(qiáng)行供給的安全性:最顯著和最重要的區(qū)別是SHA-1摘要比MD5摘要長32 位剑鞍。使用強(qiáng)行技術(shù)昨凡,產(chǎn)生任何一個(gè)報(bào)文使其摘要等于給定報(bào)摘要的難度對(duì)MD5是2128數(shù)量級(jí)的操作,而對(duì)SHA-1則是2160數(shù)量級(jí)的操作蚁署。這樣便脊,SHA-1對(duì)強(qiáng)行攻擊有更大的強(qiáng)度。

對(duì)密碼分析的安全性:由于MD5的設(shè)計(jì)光戈,易受密碼分析的攻擊哪痰,SHA-1顯得不易受這樣的攻擊。

速度:在相同的硬件上田度,SHA-1的運(yùn)行速度比MD5慢妒御。

對(duì)稱與非對(duì)稱算法比較

以上綜述了兩種加密方法的原理,總體來說主要有下面幾個(gè)方面的不同:

在管理方面:公鑰密碼算法只需要較少的資源就可以實(shí)現(xiàn)目的镇饺,在密鑰的分配上乎莉,兩者之間相差一個(gè)指數(shù)級(jí)別(一個(gè)是n一個(gè)是n2)。所以私鑰密碼算法不適應(yīng)廣域網(wǎng)的使用奸笤,而且更重要的一點(diǎn)是它不支持?jǐn)?shù)字簽名惋啃。

在安全方面:由于公鑰密碼算法基于未解決的數(shù)學(xué)難題,在破解上幾乎不可能监右。對(duì)于私鑰密碼算法边灭,到了AES雖說從理論來說是不可能破解的,但從計(jì)算機(jī)的發(fā)展角度來看健盒。公鑰更具有優(yōu)越性绒瘦。

從速度上來看:AES的軟件實(shí)現(xiàn)速度已經(jīng)達(dá)到了每秒數(shù)兆或數(shù)十兆比特。是公鑰的100倍扣癣,如果用硬件來實(shí)現(xiàn)的話這個(gè)比值將擴(kuò)大到1000倍惰帽。

三. 加密算法的選擇

由于非對(duì)稱加密算法的運(yùn)行速度比對(duì)稱加密算法的速度慢很多,當(dāng)我們需要加密大量的數(shù)據(jù)時(shí)父虑,建議采用對(duì)稱加密算法该酗,提高加解密速度。

對(duì)稱加密算法不能實(shí)現(xiàn)簽名,因此簽名只能非對(duì)稱算法呜魄。

由于對(duì)稱加密算法的密鑰管理是一個(gè)復(fù)雜的過程悔叽,密鑰的管理直接決定著他的安全性,因此當(dāng)數(shù)據(jù)量很小時(shí)爵嗅,我們可以考慮采用非對(duì)稱加密算法娇澎。

在實(shí)際的操作過程中,我們通常采用的方式是:采用非對(duì)稱加密算法管理對(duì)稱算法的密鑰操骡,然后用對(duì)稱加密算法加密數(shù)據(jù)九火,這樣我們就集成了兩類加密算法的優(yōu)點(diǎn),既實(shí)現(xiàn)了加密速度快的優(yōu)點(diǎn)册招,又實(shí)現(xiàn)了安全方便管理密鑰的優(yōu)點(diǎn)岔激。

那采用多少位的密鑰呢? RSA建議采用1024位的數(shù)字是掰,ECC建議采用160位虑鼎,AES采用128為即可。

四. 密碼學(xué)在現(xiàn)代的應(yīng)用

保密通信:保密通信是密碼學(xué)產(chǎn)生的動(dòng)因键痛。使用公私鑰密碼體制進(jìn)行保密通信時(shí)炫彩,信息接收者只有知道對(duì)應(yīng)的密鑰才可以解密該信息。

數(shù)字簽名:數(shù)字簽名技術(shù)可以代替?zhèn)鹘y(tǒng)的手寫簽名絮短,而且從安全的角度考慮江兢,數(shù)字簽名具有很好的防偽造功能。在政府機(jī)關(guān)丁频、軍事領(lǐng)域杉允、商業(yè)領(lǐng)域有廣泛的應(yīng)用環(huán)境。

秘密共享:秘密共享技術(shù)是指將一個(gè)秘密信息利用密碼技術(shù)分拆成n個(gè)稱為共享因子的信息席里,分發(fā)給n個(gè)成員叔磷,只有k(k≤n)個(gè)合法成員的共享因子才可以恢復(fù)該秘密信息,其中任何一個(gè)或m(m≤k)個(gè)成員合作都不知道該秘密信息奖磁。利用秘密共享技術(shù)可以控制任何需要多個(gè)人共同控制的秘密信息改基、命令等。

認(rèn)證功能:在公開的信道上進(jìn)行敏感信息的傳輸咖为,采用簽名技術(shù)實(shí)現(xiàn)對(duì)消息的真實(shí)性秕狰、完整性進(jìn)行驗(yàn)證,通過驗(yàn)證公鑰證書實(shí)現(xiàn)對(duì)通信主體的身份驗(yàn)證躁染。

密鑰管理:密鑰是保密系統(tǒng)中更為脆弱而重要的環(huán)節(jié)封恰,公鑰密碼體制是解決密鑰管理工作的有力工具;利用公鑰密碼體制進(jìn)行密鑰協(xié)商和產(chǎn)生褐啡,保密通信雙方不需要事先共享秘密信息;利用公鑰密碼體制進(jìn)行密鑰分發(fā)鳖昌、保護(hù)备畦、密鑰托管低飒、密鑰恢復(fù)等。

基于公鑰密碼體制可以實(shí)現(xiàn)以上通用功能以外懂盐,還可以設(shè)計(jì)實(shí)現(xiàn)以下的系統(tǒng):安全電子商務(wù)系統(tǒng)褥赊、電子現(xiàn)金系統(tǒng)、電子選舉系統(tǒng)莉恼、電子招投標(biāo)系統(tǒng)拌喉、電子彩票系統(tǒng)等。

一. AES對(duì)稱加密:

AES加密

分組

二. 分組密碼的填充

分組密碼的填充

PKCS#5填充方式

三. 流密碼:

流密碼

四. 分組密碼加密中的四種模式:

3.1 ECB模式

image

優(yōu)點(diǎn):

1.簡單俐银;

2.有利于并行計(jì)算尿背;

3.誤差不會(huì)被傳送;

缺點(diǎn):

1.不能隱藏明文的模式捶惜;

2.可能對(duì)明文進(jìn)行主動(dòng)攻擊田藐;

image

3.2 CBC模式:

image

優(yōu)點(diǎn):

1.不容易主動(dòng)攻擊,安全性好于ECB,適合傳輸長度長的報(bào)文,是SSL、IPSec的標(biāo)準(zhǔn)吱七。

缺點(diǎn):

1.不利于并行計(jì)算汽久;

2.誤差傳遞;

3.需要初始化向量IV

3.3 CFB模式:

image

優(yōu)點(diǎn):

1.隱藏了明文模式;

2.分組密碼轉(zhuǎn)化為流模式;

3.可以及時(shí)加密傳送小于分組的數(shù)據(jù);

缺點(diǎn):

1.不利于并行計(jì)算;

2.誤差傳送:一個(gè)明文單元損壞影響多個(gè)單元;

3.唯一的IV;

3.4 OFB模式:

image

優(yōu)點(diǎn):

1.隱藏了明文模式;

2.分組密碼轉(zhuǎn)化為流模式;

3.可以及時(shí)加密傳送小于分組的數(shù)據(jù);

缺點(diǎn):

1.不利于并行計(jì)算;

2.對(duì)明文的主動(dòng)攻擊是可能的;

3.誤差傳送:一個(gè)明文單元損壞影響多個(gè)單元;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末踊餐,一起剝皮案震驚了整個(gè)濱河市景醇,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌吝岭,老刑警劉巖三痰,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異苍碟,居然都是意外死亡酒觅,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門微峰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來舷丹,“玉大人,你說我怎么就攤上這事蜓肆⊙湛” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵仗扬,是天一觀的道長症概。 經(jīng)常有香客問我,道長早芭,這世上最難降的妖魔是什么彼城? 我笑而不...
    開封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上募壕,老公的妹妹穿的比我還像新娘调炬。我一直安慰自己,他們只是感情好舱馅,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開白布缰泡。 她就那樣靜靜地躺著,像睡著了一般代嗤。 火紅的嫁衣襯著肌膚如雪棘钞。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天干毅,我揣著相機(jī)與錄音宜猜,去河邊找鬼。 笑死溶锭,一個(gè)胖子當(dāng)著我的面吹牛宝恶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播趴捅,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼垫毙,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了拱绑?” 一聲冷哼從身側(cè)響起综芥,我...
    開封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎猎拨,沒想到半個(gè)月后膀藐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡红省,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年额各,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吧恃。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡虾啦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出痕寓,到底是詐尸還是另有隱情傲醉,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布呻率,位于F島的核電站硬毕,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏礼仗。R本人自食惡果不足惜吐咳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一逻悠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧韭脊,春花似錦蹂风、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽慎恒。三九已至任内,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間融柬,已是汗流浹背死嗦。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留粒氧,地道東北人越除。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像外盯,于是被迫代替她去往敵國和親摘盆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 這篇文章主要講述在Mobile BI(移動(dòng)商務(wù)智能)開發(fā)過程中饱苟,在網(wǎng)絡(luò)通信孩擂、數(shù)據(jù)存儲(chǔ)、登錄驗(yàn)證這幾個(gè)方面涉及的加密...
    雨_樹閱讀 2,425評(píng)論 0 6
  • 本文主要介紹移動(dòng)端的加解密算法的分類箱熬、其優(yōu)缺點(diǎn)特性及應(yīng)用类垦,幫助讀者由淺入深地了解和選擇加解密算法。文中會(huì)包含算法的...
    蘋果粉閱讀 11,505評(píng)論 5 29
  • 在開發(fā)應(yīng)用過程中城须,客戶端與服務(wù)端經(jīng)常需要進(jìn)行數(shù)據(jù)傳輸蚤认,涉及到重要隱私安全信息時(shí),開發(fā)者自然會(huì)想到對(duì)其進(jìn)行加密糕伐,即使...
    閑庭閱讀 3,269評(píng)論 0 11
  • 關(guān)于與
    施小杰閱讀 99評(píng)論 0 0
  • 距離砰琢。城市的交錯(cuò) 每一個(gè)夜幕降臨,都是另外一個(gè)空間 我們奔走在各自努力的方向 心近在遲尺赤炒,腳步行走在天涯 街頭氯析。人...
    38ffe2ae3f02閱讀 184評(píng)論 5 9