




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1.1數(shù)據(jù)加密概述1.2DES算法1.3RSA算法1.4MD5算法在互聯(lián)網(wǎng)上進(jìn)行文件、電子商務(wù)往來等信息傳輸時存在許多不安全因素,尤其是一些機(jī)密文件在網(wǎng)絡(luò)上傳輸時,信息安全顯得尤為重要。不安全性是互聯(lián)網(wǎng)的存在基礎(chǔ)——TCP/IP協(xié)議所固有的,因此解決這一問題的方案就是加密,加密后的數(shù)據(jù)被別人獲得后,在解密之前是不可讀的。數(shù)據(jù)加密是所有數(shù)據(jù)安全技術(shù)的核心。加密在網(wǎng)絡(luò)上的作用是,防止重要的或私有化信息在網(wǎng)絡(luò)上被截獲和篡改。需要說明的是,文件加密不只應(yīng)用于電子郵件等網(wǎng)絡(luò)上的傳輸,也可應(yīng)用于靜態(tài)文件的保護(hù)。1.1數(shù)據(jù)加密概述數(shù)據(jù)加密是指對原來被稱為“明文”的數(shù)據(jù)按某種算法進(jìn)行處理,使其成為不可讀的一段代碼的過程。通常把通過加密得到的代碼稱為“密文”。數(shù)據(jù)加密的逆過程稱為數(shù)據(jù)解密,即將密文轉(zhuǎn)化為明文的過程。只有利用相應(yīng)的密鑰對密文進(jìn)行解密,才能顯示出明文的內(nèi)容,通過這樣的途徑能夠保護(hù)數(shù)據(jù)不被非授權(quán)的訪問者非法竊取。
加密技術(shù)通常分為兩大類:常規(guī)密鑰密碼體制和公開密鑰密碼體制。所謂常規(guī)密鑰密碼體制,是指加密密鑰與解密密鑰相同的密碼體制。這種加密系統(tǒng)又稱為對稱密鑰系統(tǒng)。美國政府采用的DES加密標(biāo)準(zhǔn)就是一種典型的對稱式加密方法。
公開密鑰密碼體制使用不同的加密密鑰與解密密鑰,是一種“由已知加密密鑰推導(dǎo)出解密密鑰在計算上是不可行的”密碼體制。公開密鑰密碼體制采用非對稱的加密算法,RSA算法是其中使用最廣泛的加密算法之一。RSA使用兩個密鑰:一個公共密鑰,一個私有密鑰。如果用其中的一個密鑰加密,則可用另一個解密。兩個密鑰需要配對使用,否則不能解密。公共密鑰可以對外公布,私有密鑰只有持有者自己擁有。使用公開密鑰密碼體制很好地避免了密鑰的傳輸安全性問題。美國國家標(biāo)準(zhǔn)局1973年開始研究除國防部外的其他部門的計算機(jī)系統(tǒng)的數(shù)據(jù)加密標(biāo)準(zhǔn),于1973年5月15日和1974年8月27日先后兩次向公眾發(fā)出了征求加密算法的公告。加密算法要達(dá)到的目的(通常稱為DES密碼算法要求)主要為以下四點:
(1)提供高質(zhì)量的數(shù)據(jù)保護(hù),防止數(shù)據(jù)未經(jīng)授權(quán)地泄露和未被察覺地修改;
(2)具有相當(dāng)高的復(fù)雜性,使得破譯的開銷超過可能獲得的利益,同時又要便于理解和掌握;1.2DES算法
(3)?DES密碼體制的安全性應(yīng)該不依賴于算法的保密,其安全性僅以加密密鑰的保密為基礎(chǔ);
(4)實現(xiàn)經(jīng)濟(jì),運行有效,并且適用于多種不同的應(yīng)用。
1977年1月,美國政府正式許可以IBM公司設(shè)計的方案作為非機(jī)密數(shù)據(jù)的數(shù)據(jù)加密標(biāo)準(zhǔn)(DataEncryptionStandard,DES)。DES算法已經(jīng)應(yīng)用于許多需要安全加密的場合,UNIX的密碼保護(hù)算法就是以DES算法為基礎(chǔ)的。
DES屬于常規(guī)密鑰密碼體制,是一種分組密碼。在加密前,先對整個明文進(jìn)行分組。每一個組長為64bit(位)。然后對每一個64bit二進(jìn)制數(shù)據(jù)進(jìn)行加密處理,產(chǎn)生一組64bit密文數(shù)據(jù)。最后將各組密文串接起來,即得出整個的密文。使用的密鑰長度為64bit(實際密鑰長度為56bit,有8bit用于奇偶校驗)。1.2.1DES算法分析
1.密鑰的生成
DES算法的實現(xiàn)過程中經(jīng)過了16次的迭代,每一次的迭代都需要一個48bit的密鑰。下面介紹如何從用戶提供的64bit的密鑰來獲得16個48bit的密鑰,實現(xiàn)過程如圖1-1所示。圖1-1DES密鑰的生成
(1)變換密鑰。從用戶處取得一個64bit的密鑰K,去除其中作為奇偶校驗位的第8、16、24、32、40、48、56、64位,剩下的56位作為有效輸入密鑰K0。
根據(jù)表1-1進(jìn)行密鑰變換,得到新的56位密鑰。將變換后的密鑰等分成兩個部分,分別為A0和B0。表1-1中的數(shù)據(jù)表示密鑰K中各位的位置序號。表1-1變換密鑰數(shù)據(jù)57494133251791585042342618102595143352719113605244366355473931231576254463830221466153453729211352820124
(2)密鑰移位。把步驟(1)中生成的兩個28bit的密鑰(A0、B0)分別循環(huán)左移,得到兩個新的28bit的密鑰,分別為A1和B1。
(3)密鑰選取。把步驟(2)中生成的兩個28bit的密鑰(A1、B1)合并,生成一個56bit的密鑰。
根據(jù)表1-2把生成的56bit密鑰壓縮為一個48bit的密鑰K1。
(4)循環(huán)執(zhí)行。利用生成的兩個28bit的密鑰從步驟(2)開始循環(huán)執(zhí)行,直至生成K16結(jié)束。循環(huán)過程中,根據(jù)表1-3來決定步驟(2)循環(huán)左移的位數(shù)。表1-2壓縮密鑰數(shù)據(jù)1417112415328156211023191242681672720132415231374755304051453348444939563453464250362932表1-3循環(huán)左移位數(shù)序號12345678位數(shù)11222222序號910111213141516位數(shù)12222221
2.?dāng)?shù)據(jù)加密
利用DES算法對數(shù)據(jù)加密的過程如圖1-2所示。64bit的明文X進(jìn)行初始置換IP(InitialPermutation)得出X0,其左半邊32bit和右半邊32bit分別記為L0和R0。然后再經(jīng)過16次的迭代。
如果用Xi表示第i次的迭代結(jié)果,同時假設(shè)Li和Ri分別代表Xi的左半邊和右半邊(各32bit),則從圖1-2中不難看出,
式中,i=1,2,…,16,而Ki是48bit密鑰,即從原來的64bit初始密鑰經(jīng)過若干次變換而得出。圖1-2DES加密算法
在最后一次的迭代之后,左右半邊沒有交換。這是為了使算法既能加密又能解密。最后一次的變換是IP的逆變換IP-1,其輸入是R16L16。Y即為輸出的密文。
(1)初始置換IP。取得64位的數(shù)據(jù)X,如果數(shù)據(jù)長度不足64位,應(yīng)該將其擴(kuò)展為64位(例如補(bǔ)零)。將64位數(shù)據(jù)按表1-4變換(IP),得到64位的數(shù)據(jù)X0。表1-4初始置換數(shù)據(jù)58504234261810260524436282012462544638302214664564840322416857494133251791595143352719113615345372921135635547393123157
(2)數(shù)據(jù)擴(kuò)展。把64位數(shù)據(jù)X0等分成左、右兩部分,分別記為L0、R0,各為32位。L0不變,按照表1-5把R0由32位擴(kuò)展為48位。把擴(kuò)展后的48位數(shù)據(jù)與密鑰K1進(jìn)行按位異或操作,形成一個新的48位數(shù)據(jù)。表1-5數(shù)據(jù)擴(kuò)展3212345456789891011121312131415161716171819202120212223242524252627282928293031321(3)數(shù)據(jù)壓縮。將步驟(2)中異或后生成的48位數(shù)據(jù)分為8個6位長的部分,第1~6位稱為B1,第7~12位稱為B2,依此類推,第43~48位稱為B8。
Bi(i=1,2,,8)長度為6位,分別根據(jù)表1-6~表1-13中提供的數(shù)據(jù)進(jìn)行變換,得到8個4位長的數(shù)據(jù),即32位。表1-6~表1-13中提供的所有數(shù)據(jù)都被當(dāng)作4位長度處理。具體的變換過程是這樣的:將Bi的第1位和第6位組合為一個2位長度的變量M,M作為表中的行號。將Bi的第2位到第5位組合為一個4位長度的變量N,N作為表中的列號。根據(jù)M、N從表中查到相應(yīng)的值來代替Bi。表1-6數(shù)據(jù)壓縮(一)1441312151183106125907015741421311061211953841148136211151297310501512824917511314100613表1-7數(shù)據(jù)壓縮(二)1518146113497213120510313471528141201106911501471110413158126932151381013154211671205149表1-8數(shù)據(jù)壓縮(三)1009146315511312711428137093461028514121115113649815301112125101471101306987415143115212表1-9數(shù)據(jù)壓縮(四)7131430691012851112415138115615034721211014910690121171315131452843150610113894511127214表1-10數(shù)據(jù)壓縮(五)2124171011685315130149141121247131501510398642111101378159125630141181271142136150910453表1-11數(shù)據(jù)壓縮(六)1211015926801334147511101542712956113140113891415528123704101131164321295151011141760813表1-12數(shù)據(jù)壓縮(七)4112141508133129751061130117491101435122158614111312371410156805926111381410795015142312表1-13數(shù)據(jù)壓縮(八)1328461511110931450127115138103741256110149271141912142061013153582114741081315129035611
(4)數(shù)據(jù)變換。對步驟(3)中生成的32位的數(shù)據(jù),根據(jù)表1-14中的數(shù)據(jù)進(jìn)行變換,產(chǎn)生新的32位的數(shù)據(jù)。步驟(2)至步驟(4)實現(xiàn)的過程,完成了圖1-2中函數(shù)f的功能。
(5)交換數(shù)據(jù)。將步驟(4)中變換得出的32位數(shù)據(jù)與L0進(jìn)行異或運算,所得的結(jié)果即為R1的值。把變換的初始值R0賦于L1。至此,完成了一次迭代過程。
(6)迭代。DES算法需要進(jìn)行16次迭代,把第i-1次得到的Li-1和Ri-1的值作為第i次的輸入數(shù)據(jù),重復(fù)執(zhí)行步驟(2)至步驟(6)的操作。需要注意的是,第i次迭代要選擇密鑰Ki與數(shù)據(jù)進(jìn)行按位異或操作。表1-14數(shù)據(jù)變換1672021291228171152326518311028241432273919133062211425為保證加密和解密的對稱性,DES算法的前15次迭代需要交換Li和Ri的值,第16次迭代不交換兩者的數(shù)值。至此,把32位的L16和R16進(jìn)行合并,生成64位的數(shù)據(jù)R16L16。
(7)?IP逆變換。根據(jù)表1-15中的數(shù)據(jù),重新調(diào)整R16L16數(shù)據(jù)位的位置,結(jié)果即為64位的密文Y。表1-15IP逆變換數(shù)據(jù)40848165624643239747155523633138646145422623037545135321612936444125220602835343115119592734242105018582633141949175725
3.?dāng)?shù)據(jù)解密
數(shù)據(jù)解密的算法與加密算法類似,區(qū)別在于步驟(2)中,和數(shù)據(jù)進(jìn)行按位異或的密鑰的使用順序有所不同。在加密過程中,第i次迭代采用密鑰Ki與數(shù)據(jù)進(jìn)行異或,而在解密時第i次迭代采用密鑰K17-i和數(shù)據(jù)進(jìn)行異或。
4.算法的安全性
DES算法具有極高的安全性,到目前為止,除了用窮舉搜索法對DES算法進(jìn)行攻擊外,還沒有發(fā)現(xiàn)更有效的辦法。而56位密鑰的窮舉空間為256,這意味著如果一臺計算機(jī)的速度是每秒檢測100萬個密鑰,則它搜索完全部密鑰需要將近2285年的時間,這是難以實現(xiàn)的。當(dāng)然,隨著科學(xué)技術(shù)的發(fā)展,當(dāng)出現(xiàn)超高速計算機(jī)后,可以考慮增長DES密鑰來達(dá)到更高的保密程度。
從DES算法的實現(xiàn)過程可以看出,DES算法中只用到64位密鑰中的56位,第8,16,24,…,64位共8個位并未參與DES運算。這一點向我們提出了一個應(yīng)用上的要求,即DES算法的安全性是基于56位的組合變化才得以保證的。在實際應(yīng)用中,我們應(yīng)該避開使用第8,16,24,…,64位作為有效數(shù)據(jù)位,而使用其他的56位作為有效數(shù)據(jù),如果不這樣,對運用DES來達(dá)到保密作用的系統(tǒng)將產(chǎn)生數(shù)據(jù)被破譯的危險。【實驗?zāi)康摹?/p>
(1)理解常規(guī)密鑰密碼體制的特點。
(2)理解DES算法的實現(xiàn)過程。
(3)學(xué)會利用C語言實現(xiàn)DES算法。
【實驗環(huán)境】
計算機(jī)一臺,安裝有C語言的編譯環(huán)境。1.2.2實驗—DES算法的實現(xiàn)【實驗過程】
(1)學(xué)習(xí)DES算法的實現(xiàn)過程。
(2)利用C語言編寫實現(xiàn)DES算法的程序。附錄A中給出了利用C語言實現(xiàn)DES算法的源程序,現(xiàn)對其中出現(xiàn)的主要函數(shù)作如下說明:
①?unsignedchar*byte2bit(unsignedcharbyte[64],unsignedcharbit[8])
功能:
把字節(jié)存儲轉(zhuǎn)換為比特存儲。對于64位(bit)的數(shù)據(jù),如果每一位占有1個字節(jié)的存儲空間,則總共需要64字節(jié)的存儲空間;如果每一位占有1個比特的存儲空間,則總共需要64比特的存儲空間,即8個字節(jié)。參數(shù):
byte[64]:用來存儲64位的數(shù)據(jù),每一位占有1個字節(jié)。
bit[8]:用來存儲64位的數(shù)據(jù),每一位占有1個比特。
②unsignedchar*bit2byte(unsignedcharbit[8],unsignedcharbyte[64])
功能:
把比特存儲轉(zhuǎn)換為字節(jié)存儲。
參數(shù):
bit[8]:用來存儲64位的數(shù)據(jù),每一位占有1個比特。
byte[64]:用來存儲64位的數(shù)據(jù),每一位占有1個字節(jié)。③voidkeychange(unsignedcharoldkey[8],unsignedcharnewkey[16][8])
功能:
利用提供的64位密鑰,生成16個48位的子密鑰。
參數(shù):
oldkey[8]:用來存儲提供的64位密鑰,每一位占1個比特。
newkey[16][8]:用來存儲生成的16個48位的子密鑰,每一位占1個比特。不難看出,每個子密鑰占用6個字節(jié)的存儲空間。④voidendes(unsignedcharm_bit[8],unsignedchark_bit[8],unsignedchare_bit[8])
功能:
對提供的64位明文,利用給定的64位密鑰進(jìn)行加密操作,生成64位密文。
參數(shù):
m_bit[8]:用來存儲64位明文,每一位占1個比特。
k_bit[8]:用來存儲64位密鑰,每一位占1個比特。
e_bit[8]:用來存儲64位密文,每一位占1個比特。⑤voidundes(unsignedcharm_bit[8],unsignedchark_bit[8],unsignedchare_bit[8])
功能:
對提供的64位密文,利用給定的64位密鑰進(jìn)行解密操作,生成64位明文。
參數(shù):
m_bit[8]:用來存儲需要解密的64位密文,每一位占1個比特。
k_bit[8]:用來存儲64位密鑰,每一位占1個比特。
e_bit[8]:用來存儲解密后生成的64位明文,每一位占1個比特。⑥voids_replace(unsignedchars_bit[8])
功能:
對提供的48位數(shù)據(jù)進(jìn)行壓縮,生成32位的數(shù)據(jù),并進(jìn)行一次變換。
參數(shù):
s_bit[8]:用來存儲48位的數(shù)據(jù)。不難看出,這里只有6個字節(jié)存儲的數(shù)據(jù)有效。該函數(shù)執(zhí)行完后,s_bit[8]存儲生成的32位數(shù)據(jù),即只有4個字節(jié)存儲的數(shù)據(jù)有效。
(3)調(diào)試、驗證編寫的程序。1.3.1RSA算法分析
RSA算法依據(jù)數(shù)論中的一個原理,即:尋求兩個大素數(shù)比較簡單,而將它們的乘積分解則極其困難。
1.密鑰生成
(1)根據(jù)需要選擇兩個大素數(shù)p和q,計算它們的乘積n?=?p?×?q,保證n滿足一定的長度,例如1024bit,n稱為模數(shù)。為了說明問題方便,這里假設(shè)p=23,q=29,則n=667。
(2)計算n的歐拉函數(shù)Φ(n)=(p-1)×(q-1),它表示不超過n并與n互素的正整數(shù)的個數(shù)。這里Φ(n)=616。1.3RSA算法
(3)在區(qū)間(0,Φ(n))內(nèi),選擇一個與Φ(n)互素的數(shù)e,作為公開指數(shù)或加密指數(shù)。這里選擇e=3。
(4)計算秘密指數(shù)(解密指數(shù))d,滿足1<d<Φ(n),并且e×d≡1(modΦ(n))??梢杂嬎愠鰀=411。
這樣便得出公開密鑰(加密密鑰)PK={e,n}和秘密密鑰SK={d,n},同時需要保密p、q和Φ(n)的值。這里PK={3,667},SK={411,667}。
2.?dāng)?shù)據(jù)加密
(1)假設(shè)需要加密的信息(明文)的二進(jìn)制形式為m,首先把m分成等長的數(shù)據(jù)塊m1,m2,…,mj,塊長為s,其中2s≤n,且s盡可能地大。
(2)對每一個數(shù)據(jù)塊mi執(zhí)行運算ci=(mi)emodn,把得到的數(shù)據(jù)塊c1,c2,…,cj。
拼接起來,即為密文c。
3.?dāng)?shù)據(jù)解密
(1)解密的過程與加密過程類似,首先把密文的二進(jìn)制形式c分成等長的數(shù)據(jù)塊c1,c2,…,cj。
(2)對每一個數(shù)據(jù)塊ci執(zhí)行運算mi=(ci)dmodn,把得到的數(shù)據(jù)塊m1,m2,…,mj,拼接起來,即為明文m。
4.算法的安全性
RSA算法的安全性依賴于大數(shù)分解,但是否等同于大數(shù)分解一直未能得到理論上的證明,因為還沒有證明破解RSA算法一定需要作大數(shù)分解。假設(shè)存在一種無需分解大數(shù)的算法,那它肯定可以修改成為大數(shù)分解算法。目前,RSA算法的一些變種算法已被證明等價于大數(shù)分解。1.3.2實驗—RSA算法的實現(xiàn)
【實驗?zāi)康摹?/p>
(1)理解公開密鑰密碼體制的特點。
(2)理解RSA算法的實現(xiàn)過程。
(3)學(xué)會用C語言實現(xiàn)RSA算法。
【實驗環(huán)境】
計算機(jī)一臺,安裝有C語言的編譯環(huán)境?!緦嶒炦^程】
(1)學(xué)習(xí)RSA算法的實現(xiàn)過程。
(2)選取較小的素數(shù),手工計算加密密鑰、解密密鑰,并對明文進(jìn)行加密、解密操作,加深對RSA算法的理解。
(3)利用C語言編寫實現(xiàn)RSA算法的程序。附錄B中給出了利用C語言實現(xiàn)RSA算法的源程序,其中模數(shù)n為512?bit,讀者可以參考。該源程序中,主要的函數(shù)調(diào)用關(guān)系可以用圖1-3表示。圖1-3RSA算法中主要的函數(shù)調(diào)用關(guān)系現(xiàn)對圖1-3中列出的函數(shù)加以說明:
●函數(shù)原型:
intmpModExp(DIGIT_Ty[],
DIGIT_Tx[],DIGIT_Te[],
DIGIT_Tm[],unsignedintndigits);
功能說明:
計算y=xemodm,其中x、e、m和y均是存儲在數(shù)組中的大整數(shù)?!窈瘮?shù)原型:
intmpModMult(DIGIT_Ta[],DIGIT_Tx[],DIGIT_Ty[],DIGIT_Tm[],unsignedintndigits);
功能說明:
計算a=(x*y)modm,其中x、y、m和a均是存儲在數(shù)組中的大整數(shù)。
●函數(shù)原型:
intmpMultiply(DIGIT_Tw[],DIGIT_Tu[],DIGIT_Tv[],unsignedintndigits);
功能說明:
計算乘積w=u*v,其中u、v和w均是存儲在數(shù)組中的大整數(shù),并且u、v的長度為ndigits,w的長度為u(或v)的長度的兩倍,即ndigits×2?!窈瘮?shù)原型:
intspMultiply(DIGIT_Tp[2],DIGIT_Tx,DIGIT_Ty);
功能說明:
計算乘積p=x*y,其中x、y均為DIGIT_T類型的整數(shù),而p的長度是x(或y)長度的兩倍。
●函數(shù)原型:
intmpModulo(DIGIT_Tr[],DIGIT_Tu[],?unsignedintudigits,DIGIT_Tv[],unsignedintvdigits);
功能說明:
計算r=umodv,其中u、v和r均是存儲在數(shù)組中的大整數(shù),并且u的長度為udigits,r、v的長度為vdigits?!窈瘮?shù)原型:
intmpDivide(DIGIT_Tq[],DIGIT_Tr[],DIGIT_Tu[],unsignedintudigits,
DIGIT_Tv[],unsignedintvdigits);
功能說明:
計算商q=u/v,余數(shù)r=umodv,其中q、r和u的長度為udigits,v的長度為vdigits。
●函數(shù)原型:
DIGIT_TmpShortDiv(DIGIT_Tq[],DIGIT_Tu[],
DIGIT_Tv,unsignedintndigits);
功能說明:
計算商q=u/v,其中q、u均是存儲在數(shù)組中的大整數(shù),v是DIGIT_T類型的整數(shù)。●函數(shù)原型:
DIGIT_TspDivide(DIGIT_T*q,DIGIT_T*r,DIGIT_Tu[2],DIGIT_Tv);
功能說明:
計算商q=u/v,余數(shù)r=umodv,其中u的長度是v的長度的兩倍。
●函數(shù)原型:
staticvoidspMultSub(DIGIT_Tuu[2],DIGIT_Tq,DIGIT_Tv1,DIGIT_Tv0);
功能說明:
計算uu=uu-q(v1v0),其中uu的長度是q長度的兩倍。需要說明的是,雖然用DIGIT_T類型存儲v0、v1,但v0、v1只占用一半的存儲空間,且(v1v0)表示二者的拼接(不表示乘積)?!窈瘮?shù)原型:
DIGIT_TmpShiftLeft(DIGIT_Ta[],DIGIT_Tb[],?unsignedintx,unsignedintndigits);
功能說明:
計算a=b<<x,其中a、b均是存儲在數(shù)組中的大整數(shù),且x<BITS_PER_DIGIT。
●函數(shù)原型:
DIGIT_TmpShiftRight(DIGIT_Ta[],DIGIT_Tb[],unsignedintx,??unsignedintndigits);
功能說明:
計算a=b>>x,其中a、b均是存儲在數(shù)組中的大整數(shù),且x<BITS_PER_DIGIT?!窈瘮?shù)原型:
staticDIGIT_TmpMultSub(DIGIT_Twn,DIGIT_Tw[],
?DIGIT_Tv[],DIGIT_Tq,unsignedintn);
功能說明:
計算w=w-q*v,其中w=wnwn-1…w0,返回值為wn。
●函數(shù)原型:
DIGIT_TmpAdd(DIGIT_Tw[],DIGIT_Tu[],DIGIT_Tv[],unsignedintndigits);
功能說明:
計算w=u+v,其中u、v、w均是存儲在數(shù)組中的大整數(shù)。
(4)調(diào)試、驗證編寫的程序。1.4.1MD5算法分析
MD5可對任意長度的報文進(jìn)行運算,然后得出128bit的消息摘要,大致的過程如下:
(1)增加填充:填充報文,使其長度滿足模512(bit)的余數(shù)為448。如果原有的報文長度正好是模512為448,則需要增加512bit的填充。依據(jù)原有報文的長度,填充的比特數(shù)為
1~512,填充內(nèi)容的第1位(比特)為1,其余全部為0。1.4
MD5算法
(2)補(bǔ)足長度:將原有報文的長度轉(zhuǎn)換為64bit的數(shù)值,如果報文長度超過64bit所能表示的數(shù)據(jù)范圍,則保留最后64bit。把該數(shù)值增加到上一步填充的數(shù)據(jù)后面,此時報文的長度應(yīng)該為512(bit)的整數(shù)倍。
(3)數(shù)據(jù)處理:以512(bit)為單位,對“增加填充”和“補(bǔ)足長度”后的報文進(jìn)行四輪循環(huán)的數(shù)據(jù)處理。數(shù)據(jù)處理過程中要借助四個特征常數(shù)和四個輔助函數(shù)。四個特征常數(shù)(低位在前)為:
A:0x01234567
B:0x89abcdef
C:0xfedcba98
D:0x76543210
四個輔助函數(shù)為:
F(X,Y,Z)=XYvnot(X)Z
G(X,Y,Z)=XZvYnot(Z)
H(X,Y,Z)=XxorYxorZ
I(X,Y,Z)=Yxor(Xvnot(Z))以上四個函數(shù)中,輸入X、Y、Z均為32bit,XY表示按位與,XvY表示按位或,not(X)表示按位取反,XxorY表示按位異或。
數(shù)據(jù)處理結(jié)束,A、B、C、D中存儲的計算結(jié)果即為128bit的消息摘要。1.4.2實驗——MD5算法的實現(xiàn)
【實驗?zāi)康摹?/p>
(1)掌握如何使用Hash算法對報文進(jìn)行鑒別;
(2)理解M
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 法律實踐面試題及答案
- 能源上鎖考試題及答案
- 抽象概括面試題及答案
- 銀川高空作業(yè)考試試題及答案
- 廣發(fā)銀行營銷崗面試題及答案
- 石油單招實操考試試題及答案
- 蜀山教師面試題及答案
- 2025年道路橋梁與渡河工程專業(yè)畢業(yè)設(shè)計開題報告
- 2025年水務(wù)招聘考試題庫
- 2025年起重技術(shù)考試題庫
- 2025年中電科太力通信科技限公司招聘自考難、易點模擬試卷(共500題附帶答案詳解)
- 設(shè)備維護(hù)保養(yǎng)知識模板
- 蘇教版科學(xué)新教材
- 甘肅省勞動和社會保障廳制勞動合同書模板
- 《膿毒癥護(hù)理查房》課件
- POS機(jī)終端設(shè)備銷售合同
- L-CNG汽車加氣站建設(shè)項目可行性研究報告
- 三位數(shù)除以一位數(shù)(首位不夠除)
- 電氣安全知識培訓(xùn)內(nèi)容
- 簡短保證金合同范例
- 能源行業(yè)檔案管理制度細(xì)則
評論
0/150
提交評論