go語言教程哪里有献起?Go從入門到精通系列視頻3.1 對稱加密算法

3.1.1對稱加密的概述

對稱加密(也叫私鑰加密算法)指加密和解密使用相同密鑰的加密算法洋访。它要求發(fā)送方和接收方在安全通信之前镣陕,商定一個(gè)密鑰。對稱算法的安全性依賴于密鑰姻政,泄漏密鑰就意味著任何人都可以對他們發(fā)送或接收的消息解密呆抑,所以密鑰的保密性對通信的安全性至關(guān)重要。

對稱加密算法的優(yōu)點(diǎn)是計(jì)算量小汁展、加密速度快鹊碍、加密效率高。

不足之處是食绿,參與方需要提前持有密鑰侈咕,一旦有人泄露則系統(tǒng)安全性被破壞;另外如何在不安全通道中提前分發(fā)密鑰也是個(gè)問題器紧,密鑰管理非常困難耀销。

基于“對稱密鑰”的加密算法主要有DES、3DES(TripleDES)铲汪、AES树姨、RC2、RC4桥状、RC5和Blowfish等帽揪。本章將介紹最常用的對稱加密算法DES、3DES(TripleDES)和AES辅斟。加密過程如圖13.4所示.

圖3.1?加密解密



3.1.2DES和TripleDES算法

DES算法全稱為Data Encryption Standard转晰,即數(shù)據(jù)加密標(biāo)準(zhǔn)算法。DES是加密和解密使用相同密鑰的加密算法士飒,也叫做單密鑰算法或私鑰加密算法查邢,傳統(tǒng)密鑰算法。它是IBM公司于1975年研究成功并公開發(fā)表的酵幕。

DES算法的入口參數(shù)有三個(gè):Key扰藕、Data、Mode芳撒。

l其中Key是DES算法的工作密鑰邓深,8個(gè)字節(jié)共64位;

l?Data是要被加密或被解密的數(shù)據(jù)笔刹;

l?Mode為DES的工作方式,有兩種:加密或解密芥备。

在沒有密鑰的情況下,解密耗費(fèi)時(shí)間非常長舌菜,基本上認(rèn)為沒有可能萌壳。加密解密耗時(shí)和需要加密的文本大小成正比,這是P問題。如果知道明文和對應(yīng)的密文袱瓮,求解所用的密鑰缤骨,這是NP問題。目前還沒有NP的求解算法尺借,但是很容易得到驗(yàn)證荷憋。想得到NP的解,只能暴力破解(窮舉破解)窮舉驗(yàn)證成為對稱加密僅有的求解方式褐望,求解時(shí)間呈指數(shù)級增長。

DES算法把64位的明文輸入塊變?yōu)閿?shù)據(jù)長度為64位的密文輸出塊串前,其中8位為奇偶校驗(yàn)位瘫里,另外56位作為密碼的長度。首先荡碾,DES把輸入的64位數(shù)據(jù)塊按位重新組合谨读,并把輸出分為L0、R0兩部分坛吁,每部分各長32位劳殖,并進(jìn)行前后置換,最終由L0輸出左32位拨脉,R0輸出右32位

根據(jù)這個(gè)法則經(jīng)過16次迭代運(yùn)算后哆姻,得到L16、R16玫膀,將此作為輸入矛缨,進(jìn)行與初始置換相反的逆置換,即得到密文輸出帖旨。DES算法具有極高的安全性箕昭,到目前為止,除了用窮舉搜索法對DES算法進(jìn)行攻擊外解阅,還沒有發(fā)現(xiàn)更有效的辦法落竹。56位長密鑰的窮舉空間為2^56,這意味著如果一臺計(jì)算機(jī)的速度是每秒種檢測100萬個(gè)密鑰货抄,那么它搜索完全部密鑰就需要將近2285年的時(shí)間述召,因此DES算法是一種很可靠的加密方法。3DES密鑰是24字節(jié)蟹地,即192位二進(jìn)制桨武。

3.1.3AES加密

高級加密標(biāo)準(zhǔn)(英語:Advanced Encryption Standard,縮寫:AES)锈津,由美國國家標(biāo)準(zhǔn)與技術(shù)研究院(NIST)于2001年11月26日發(fā)布呀酸,并在2002年5月26日成為有效的標(biāo)準(zhǔn)。2006年琼梆,高級加密標(biāo)準(zhǔn)已然成為對稱密鑰加密中最流行的算法之一性誉。該算法與其他對稱密碼算法相比更安全窿吩、效率更高等特點(diǎn)。

AES使用128位错览,192位或者256位的密鑰長度(密鑰分別是:16字節(jié)纫雁、24字節(jié)、32字節(jié))倾哺,使得它比密鑰長度為56位的DES更健壯可靠轧邪。

2^64 = 18446744073709551616

2^64這個(gè)數(shù)大于全球小麥1000年的產(chǎn)量。如果1微秒驗(yàn)證一個(gè)密碼(1秒驗(yàn)證100萬個(gè))羞海,窮舉需要費(fèi)時(shí)58萬年忌愚。

2^256?約= 10 ^ 77

10^80?是當(dāng)前人類可見宇宙中所有物質(zhì)原子數(shù)目的總和。

3.1.4AES的加密模式

AES的加密模式對應(yīng)中文名稱如表所示却邓。

加密模式(英文名稱及簡寫)中文名稱

Electronic Code Book(ECB)電子密碼本模式

Cipher Block Chaining(CBC)密碼分組鏈接模式

Cipher Feedback Mode(CFB)加密反饋模式

Output Feedback Mode(OFB)輸出反饋模式

ECB:最基本的加密模式硕糊,也就是通常理解的加密,相同的明文將永遠(yuǎn)加密成相同的密文腊徙,無初始向量简十,容易受到密碼本重放攻擊,一般情況下很少用撬腾。

CBC:明文被加密前要與前面的密文進(jìn)行異或運(yùn)算后再加密螟蝙,因此只要選擇不同的初始向量,相同的密文加密后會形成不同的密文民傻,這是目前應(yīng)用最廣泛的模式胶逢。CBC加密后的密文是上下文相關(guān)的,但明文的錯(cuò)誤不會傳遞到后續(xù)分組饰潜,但如果一個(gè)分組丟失初坠,后面的分組將全部作廢(同步錯(cuò)誤)。

CFB:類似于自同步序列密碼彭雾,分組加密后碟刺,按8位分組將密文和明文進(jìn)行移位異或后得到輸出同時(shí)反饋回移位寄存器,優(yōu)點(diǎn)最小可以按字節(jié)進(jìn)行加解密薯酝,也可以是n位的半沽,CFB也是上下文相關(guān)的,CFB模式下吴菠,明文的一個(gè)錯(cuò)誤會影響后面的密文(錯(cuò)誤擴(kuò)散)者填。

OFB:將分組密碼作為同步序列密碼運(yùn)行,和CFB相似做葵,不過OFB用的是前一個(gè)n位密文輸出分組反饋回移位寄存器占哟,OFB沒有錯(cuò)誤擴(kuò)散問題。

3.1.5填充方式

進(jìn)行DES、3DES和AES三種對稱加密算法時(shí)榨乎,常采用的是PKCS5Padding填充怎燥、Zeros填充(0填充)。

1. PKCS5Padding

每個(gè)填充的字節(jié)都記錄了填充的總字節(jié)數(shù)

“a”填充后結(jié)果為:?[97 7 7 7 7 7 7 7] ??

“ab”填充后結(jié)果為:?[97 98 6 6 6 6 6 6] ??

“一a”填充后結(jié)果為:[228 184 128 97 4 4 4 4]

2. ZerosPadding

全部填充為0的字節(jié)

“a”填充后結(jié)果為:?[97 0 0 0 0 0 0 0] ?

“ab”填充后結(jié)果為:[97 98 0 0 0 0 0 0] ?

“一a”填充后結(jié)果為:[228 184 128 97 0 0 0 0]

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蜜暑,一起剝皮案震驚了整個(gè)濱河市铐姚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌肛捍,老刑警劉巖隐绵,帶你破解...
    沈念sama閱讀 222,729評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異拙毫,居然都是意外死亡依许,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評論 3 399
  • 文/潘曉璐 我一進(jìn)店門恬偷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人帘睦,你說我怎么就攤上這事袍患。” “怎么了竣付?”我有些...
    開封第一講書人閱讀 169,461評論 0 362
  • 文/不壞的土叔 我叫張陵诡延,是天一觀的道長。 經(jīng)常有香客問我古胆,道長肆良,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,135評論 1 300
  • 正文 為了忘掉前任逸绎,我火速辦了婚禮惹恃,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘棺牧。我一直安慰自己巫糙,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評論 6 398
  • 文/花漫 我一把揭開白布颊乘。 她就那樣靜靜地躺著参淹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪乏悄。 梳的紋絲不亂的頭發(fā)上浙值,一...
    開封第一講書人閱讀 52,736評論 1 312
  • 那天,我揣著相機(jī)與錄音檩小,去河邊找鬼开呐。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的负蚊。 我是一名探鬼主播神妹,決...
    沈念sama閱讀 41,179評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼家妆!你這毒婦竟也來了鸵荠?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,124評論 0 277
  • 序言:老撾萬榮一對情侶失蹤伤极,失蹤者是張志新(化名)和其女友劉穎蛹找,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哨坪,經(jīng)...
    沈念sama閱讀 46,657評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡庸疾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了当编。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片届慈。...
    茶點(diǎn)故事閱讀 40,872評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖忿偷,靈堂內(nèi)的尸體忽然破棺而出金顿,到底是詐尸還是另有隱情,我是刑警寧澤鲤桥,帶...
    沈念sama閱讀 36,533評論 5 351
  • 正文 年R本政府宣布揍拆,位于F島的核電站,受9級特大地震影響茶凳,放射性物質(zhì)發(fā)生泄漏嫂拴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評論 3 336
  • 文/蒙蒙 一贮喧、第九天 我趴在偏房一處隱蔽的房頂上張望筒狠。 院中可真熱鬧,春花似錦箱沦、人聲如沸窟蓝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽运挫。三九已至,卻和暖如春套耕,著一層夾襖步出監(jiān)牢的瞬間谁帕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評論 1 274
  • 我被黑心中介騙來泰國打工冯袍, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留匈挖,地道東北人碾牌。 一個(gè)月前我還...
    沈念sama閱讀 49,304評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像儡循,于是被迫代替她去往敵國和親舶吗。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評論 2 361

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