古詩詞大全網 - 個性簽名 - CAESAR 支持什麽系統

CAESAR 支持什麽系統

密文是相對於明文說的,明文其實就是妳要傳達的消息,而明文通過加密之後就成了密文,密文其實是信息安全的壹個詞匯。幫妳介紹壹下。

信息安全的發展歷史

通信保密科學的誕生

古羅馬帝國時期的Caesar密碼:能夠將明文信息變換為人們看不懂的字符串,(密文),當密文傳到夥伴手中時,又可方便的還原為原來的明文形式。 Caesar密碼由明文字母循環移3位得到。

1568年,L.Battista發明了多表代替密碼,並在美國南北戰爭期間有聯軍使用。例:Vigenere密碼和Beaufort密碼

1854年,Playfair發明了多字母代替密碼,英國在第壹次世界大戰中使用了此密碼。例:Hill密碼,多表、多字母代替密碼成為古典密碼學的主流。

密碼破譯技術(密碼分析)的發展:例:以1918年W.Friedman使用重合指數破譯多表代替密碼技術為裏程碑。 1949年C.Shannon的《保密系統的通信理論》文章發表在貝爾系統技術雜誌上。這兩個成果為密碼學的科學研究奠定了基礎。從藝術變為科學。實際上,這就是通信保密科學的誕生,其中密碼是核心技術。

公鑰密碼學革命

25年之後,20世紀70年代,IBM公司的DES(美國數據加密標準)和1976年Diffie-Hellman,提出了公開密鑰密碼思想,1977年公鑰密碼算法RSA的提出為密碼學的發展註入了新的活力。

公鑰密碼掀起了壹場革命,對信息安全有三方面的貢獻:首次從計算復雜性上刻畫了密碼算法的強度,突破了Shannon僅關心理論強度的局限性;他將傳統密碼算法中兩個密鑰管理中的保密性要求,轉換為保護其中壹格的保密性及另壹格的完整性的要求;它將傳統密碼算法中密鑰歸屬從通信兩方變為壹個單獨的用戶,從而使密鑰的管理復雜度有了較大下降。

公鑰密碼的提出,註意:壹是密碼學的研究逐步超越了數據的通信保密範圍,開展了對數據的完整性、數字簽名等技術的研究;二是隨著計算機和網絡的發展,密碼學壹逐步成為計算機安全、網絡安全的重要支柱,使得數據安全成為信息安全的全新內容,超越了以往物理安全占據計算機安全的主導地位狀態。

訪問控制技術與可信計算機評估準則

1969年,B.Lampson提出了訪問控制模型。

1973年,D.Bell 和L.Lapadula,創立了壹種模擬軍事安全策略的計算機操作模型,這是最早也是最常用的壹種計算機多級安全模型。

1985年,美國國防部在Bell-Lapadula模型的基礎上提出了可信計算機評估準則(通常稱為橘皮書)。按照計算機系統的安全防護能力,分成8個等級。

1987年,Clark-Wilson模型針對完整性保護和商業應用提出的。

信息保障

1998年10月,美國國家安全局(NSA)頒布了信息保障技術框架1.1版,2003年2月6日,美國國防部(DOD)頒布了信息保障實施命令8500.2,從而信息保障成為美國國防組織實施信息化作戰的既定指導思想。

信息保障(IA:information assurance):通過確保信息的可用性、完整性、可識別性、保密性和抵賴性來保護信息系統,同時引入保護、檢測及響應能力,為信息系統提供恢復功能。這就是信息保障模型PDRR。

protect保護、detect檢測、react響應、restore 恢復

美國信息保障技術框架的推進使人們意識到對信息安全的認識不要停留在保護的框架之下,同時還需要註意信息系統的檢測和響應能力。

2003年,中國發布了《國家信息領導小組關於信息安全保障工作的意見》,這是國家將信息安全提到戰略高度的指導性文件

信息保密技術的研究成果:

發展各種密碼算法及其應用:

DES(數據加密標準)、RSA(公開密鑰體制)、ECC(橢圓曲線離散對數密碼體制)等。

計算機信息系統安全模型和安全評價準則:

訪問監視器模型、多級安全模型等;TCSEC(可信計算機系統評價準則)、ITSEC(信息技術安全評價準則)等。

加密(Encryption)

加密是通過對信息的重新組合,使得只有收發雙方才能解碼並還原信息的壹種手段。

傳統的加密系統是以密鑰為基礎的,這是壹種對稱加密,也就是說,用戶使用同壹個密鑰加密和解密。

目前,隨著技術的進步,加密正逐步被集成到系統和網絡中,如IETF正在發展的下壹代網際協議IPv6。硬件方面,Intel公司也在研制用於PC機和服務器主板的加密協處理器。

身份認證(Authentication)

防火墻是系統的第壹道防線,用以防止非法數據的侵入,而安全檢查的作用則是阻止非法用戶。有多種方法來鑒別壹個用戶的合法性,密碼是最常用的,但由於有許多用戶采用了很容易被猜到的單詞或短語作為密碼,使得該方法經常失效。其它方法包括對人體生理特征(如指紋)的識別,智能IC卡和USB盤。

數字簽名(Digital Signature)

數字簽名可以用來證明消息確實是由發送者簽發的,而且,當數字簽名用於存儲的數據或程序時,可以用來驗證數據或程序的完整性。

美國政府采用的數字簽名標準(Digital Signature Standard,DSS)使用了安全哈希運算法則。用該算法對被處理信息進行計算,可得到壹個160位(bit)的數字串,把這個數字串與信息的密鑰以某種方式組合起來,從而得到數字簽名。

內容檢查(Content Inspection)

即使有了防火墻、身份認證和加密,人們仍擔心遭到病毒的攻擊。有些病毒通過E-mail或用戶下載的ActiveX和Java小程序(Applet)進行傳播,帶病毒的Applet被激活後,又可能會自動下載別的Applet。現有的反病毒軟件可以清除E-mail病毒,對付新型Java和ActiveX病毒也有壹些辦法,如完善防火墻,使之能監控Applet的運行,或者給Applet加上標簽,讓用戶知道他們的來源。

介紹壹些加密的知識

密鑰加/解密系統模型

在1976年,Diffie及Hellman發表其論文“New Directions in Cryptography”[9]之前,所謂的密碼學就是指對稱密鑰密碼系統。因為加/解密用的是同壹把密鑰,所以也稱為單壹密鑰密碼系統。

這類算法可謂歷史悠久,從最早的凱撒密碼到目前使用最多的DES密碼算法,都屬於單壹密鑰密碼系統。

通常,壹個密鑰加密系統包括以下幾個部分:

① 消息空間M(Message)

② 密文空間C(Ciphertext)

③ 密鑰空間K(Key)

④ 加密算法E(Encryption Algorithm)

⑤ 解密算法D(Decryption Algorithm)

消息空間中的消息M(稱之為明文)通過由加密密鑰K1控制的加密算法加密後得到密文C。密文C通過解密密鑰K2控制的解密算法又可恢復出原始明文M。即:

EK1(M)=C

DK2(C)=M

DK2(EK1(M))=M

概念:

當算法的加密密鑰能夠從解密密鑰中推算出來,或反之,解密密鑰可以從加密密鑰中推算出來時,稱此算法為對稱算法,也稱秘密密鑰算法或單密鑰算法;

當加密密鑰和解密密鑰不同並且其中壹個密鑰不能通過另壹個密鑰推算出來時,稱此算法為公開密鑰算法。

1.凱撒密碼變換

更壹般化的移位替代密碼變換為

加密:E(m)=(m+k) mod 26

解密:D(c)=(c-k) mod 26

2.置換密碼

在置換密碼中,明文和密文的字母保持相同,但順序被打亂了。在簡單的縱行置換密碼中,明文以固定的寬度水平地寫在壹張圖表紙上,密文按垂直方向讀出;解密就是將密文按相同的寬度垂直地寫在圖表紙上,然後水平地讀出明文。例如:

明文:encryption is the transformation of data into some unreadable form

密文:eiffob nsodml ctraee rhmtuf yeaano pttirr trinem iaota onnod nsosa

20世紀40年代,Shannon提出了壹個常用的評估概念。特認為壹個好的加密算法應具有模糊性和擴散性。

模糊性:加密算法應隱藏所有的局部模式,即,語言的任何識別字符都應變得模糊,加密法應將可能導致破解密鑰的提示性語言特征進行隱藏;

擴散性:要求加密法將密文的不同部分進行混合,是任何字符都不在其原來的位置。

加密算法易破解的原因是未能滿足這兩個Shannon條件。

數據加密標準(DES)

DES算法把64位的明文輸入塊變為64位的密文輸出塊,它所使用的密鑰也是64位,其功能是把輸入的64位數據塊按位重新組合,並把輸出分為L0、R0兩部分,每部分各長32位,經過16次叠代運算後。得到L16、R16,將此作為輸入,進行逆置換,即得到密文輸出。逆置換正好是初始置的逆運算.

具體方法 需要圖 我放不上去對不起了

可以將DES算法歸結如下:

子密鑰生成:

C[0]D[0] = PC–1(K)

for 1 <= i <= 16

{C[i] = LS[i](C[i?1])

D[i] = LS[i](D[i?1])

K[i] = PC–2(C[i]D[i])}

加密過程:

L[0]R[0] = IP(x)

for 1 <= i <= 16

{L[i] = R[i?1]

R[i] = L[i?1] XOR f?(R[i?1], K[i])}

c= IP?1(R[16]L[16])v

解密過程:

R[16]L[16] = IP(c)

for 1 <= i <= 16

{R[i?1] = L[i]

L[i?1] = R[i] XOR f?(L[i], K[i])}

x= IP?1(L[0]R[0])

DES使用56位密鑰對64位的數據塊進行加密,並對64位的數據塊進行16輪編碼。與每輪編碼時,壹個48位的“每輪”密鑰值由56位的完整密鑰得出來。DES用軟件進行解碼需要用很長時間,而用硬件解碼速度非常快,但幸運的是當時大多數黑客並沒有足夠的設備制造出這種硬件設備。

在1977年,人們估計要耗資兩千萬美元才能建成壹個專門計算機用於DES的解密,而且需要12個小時的破解才能得到結果。所以,當時DES被認為是壹種十分強壯的加密方法。 但是,當今的計算機速度越來越快了,制造壹臺這樣特殊的機器的花費已經降到了十萬美元左右,所以用它來保護十億美元的銀行間線纜時,就會仔細考慮了。另壹個方面,如果只用它來保護壹臺服務器,那麽DES確實是壹種好的辦法,因為黑客絕不會僅僅為入侵壹個服務器而花那麽多的錢破解DES密文。由於現在已經能用二十萬美圓制造壹臺破譯DES的特殊的計算機,所以現在再對要求“強壯”加密的場合已經不再適用了

DES算法的應用誤區

DES算法具有極高安全性,到目前為止,除了用窮舉搜索法對DES算法進行攻擊外,還沒有發現更有效的辦法。而56位長的密鑰的窮舉空間為256,這意味著如果壹臺計算機的速度是每壹秒種檢測壹百萬個密鑰,則它搜索完全部密鑰就需要將近2285年的時間,可見,這是難以實現的,當然,隨著科學技術的發展,當出現超高速計算機後,我們可考慮把DES密鑰的長度再增長壹些,以此來達到更高的保密程度。

由上述DES算法介紹我們可以看到:DES算法中只用到64位密鑰中的其中56位,而第8、16、24、......64位8個位並未參與DES運算,這壹點,向我們提出了壹個應用上的要求,即DES的安全性是基於除了8,16,24,......64位外的其余56位的組合變化256才得以保證的。因此,在實際應用中,我們應避開使用第8,16,24,......64位作為有效數據位,而使用其它的56位作為有效數據位,才能保證DES算法安全可靠地發揮作用。如果不了解這壹點,把密鑰Key的8,16,24,..... .64位作為有效數據使用,將不能保證DES加密數據的安全性,對運用DES來達到保密作用的系統產生數據被破譯的危險,這正是DES算法在應用上的誤區,留下了被人攻擊、被人破譯的極大隱患。

A5 算 法

序列密碼簡介

序列密碼又稱流密碼,它將明文劃分成字符(如單個字母)或其編碼的基本單元(如0、1),然後將其與密鑰流作用以加密,解密時以同步產生的相同密鑰流實現。

序列密碼強度完全依賴於密鑰流產生器所產生的序列的隨機性和不可預測性,其核心問題是密鑰流生成器的設計。而保持收發兩端密鑰流的精確同步是實現可靠解密的關鍵技術。

A5算法

A5算法是壹種序列密碼,它是歐洲GSM標準中規定的加密算法,用於數字蜂窩移動電話的加密,加密從用戶設備到基站之間的鏈路。A5算法包括很多種,主要為A5/1和A5/2。其中,A5/1為強加密算法,適用於歐洲地區;A5/2為弱加密算法,適用於歐洲以外的地區。這裏將詳細討論A5/1算法。

A5/1算法的主要組成部分是三個長度不同的線性反饋移位寄存器(LFSR)R1、R2和R3,其長度分別為19、22和23。三個移位寄存器在時鐘的控制下進行左移,每次左移後,寄存器最低位由寄存器中的某些位異或後的位填充。各寄存器的反饋多項式為:

R1:x18+x17+x16+x13

R2:x21+x20

R3:x22+x21+x20+x7

A5算法的輸入是64位的會話密鑰Kc和22位的隨機數(幀號)。

IDEA

IDEA即國際數據加密算法,它的原型是PES(Proposed Encryption Standard)。對PES改進後的新算法稱為IPES,並於1992年改名為IDEA(International Data Encryption Algorithm)。

IDEA是壹個分組長度為64位的分組密碼算法,密鑰長度為128位,同壹個算法即可用於加密,也可用於解密。

IDEA的加密過程包括兩部分:

(1) 輸入的64位明文組分成四個16位子分組:X1、X2、X3和X4。四個子分組作為算法第壹輪的輸入,總***進行八輪的叠代運算,產生64位的密文輸出。

(2) 輸入的128位會話密鑰產生八輪叠代所需的52個子密鑰(八輪運算中每輪需要六個,還有四個用於輸出變換)

子密鑰產生:輸入的128位密鑰分成八個16位子密鑰(作為第壹輪運算的六個和第二輪運算的前兩個密鑰);將128位密鑰循環左移25位後再得八個子密鑰(前面四個用於第二輪,後面四個用於第三輪)。這壹過程壹直重復,直至產生所有密鑰。

IDEA的解密過程和加密過程相同,只是對子密鑰的要求不同。下表給出了加密子密鑰和相應的解密子密鑰。

密鑰間滿足:

Zi(r) ⊙ Zi(r) ?1=1 mod (216+1)

Zi(r) ?+? Zi(r) =0 mod (216+1)

Blowfish算法

Blowfish是Bruce Schneier設計的,可以免費使用。

Blowfish是壹個16輪的分組密碼,明文分組長度為64位,使用變長密鑰(從32位到448位)。Blowfish算法由兩部分組成:密鑰擴展和數據加密。

1. 數據加密

數據加密總***進行16輪的叠代,如圖所示。具體描述為(將明文x分成32位的兩部分:xL, xR)

for i = 1 to 16

{

xL = xL XOR Pi

xR = F(xL) XOR xR

if

{

交換xL和xR

}

}

xR = xR XOR P17

xL = xL XOR P18

合並xL 和xR

其中,P陣為18個32位子密鑰P1,P2,…,P18。

解密過程和加密過程完全壹樣,只是密鑰P1,P2,…,P18以逆序使用。

2. 函數F

把xL分成四個8位子分組:a, b, c 和d,分別送入四個S盒,每個S盒為8位輸入,32位輸出。四個S盒的輸出經過壹定的運算組合出32位輸出,運算為

F(xL) =((S1,a + S2,b mod 232) XOR S3,c) + S4,d mod 232

其中,Si,x表示子分組x(x=a、b、c或d)經過Si (i=1、2、3或4)盒的輸出。

沒有太多地方寫了,不把整個過程列上面了,就簡單介紹壹下好了。

GOST算法

GOST是前蘇聯設計的分組密碼算法,為前蘇聯國家標準局所采用,標準號為:28147–89[5]。

GOST的消息分組為64位,密鑰長度為256位,此外還有壹些附加密鑰,采用32輪叠代。

RC5算法

RC5是壹種分組長度、密鑰長度和加密叠代輪數都可變的分組密碼體制。RC5算法包括三部分:密鑰擴展、加密算法和解密算法。

PKZIP算法

PKZIP加密算法是壹個壹次加密壹個字節的、密鑰長度可變的序列密碼算法,它被嵌入在PKZIP數據壓縮程序中。

該算法使用了三個32位變量key0、key1、key2和壹個從key2派生出來的8位變量key3。由密鑰初始化key0、key1和key2並在加密過程中由明文更新這三個變量。PKZIP序列密碼的主函數為updata_keys()。該函數根據輸入字節(壹般為明文),更新三個32位的變量並獲得key3。

重點:單向散列函數

MD5 算 法

md5的全稱是message-?digest?algorithm?5(信息-摘要算法),在90年代初由mit?laboratory?for?computer?science和rsa?data?security?inc的ronald?l.?rivest開發出來,經md2、md3和md4發展而來。它的作用是讓大容量信息在用數字簽名軟件簽署私人密匙前被"壓縮"成壹種保密的格式(就是把壹?個任意長度的字節串變換成壹定長的大整數)。不管是md2、md4還是md5,它們都需要獲得壹個隨機長度的信息並產生壹個128位的信息摘要。雖然這些?算法的結構或多或少有些相似,但md2的設計與md4和md5完全不同,那是因為md2是為8位機器做過設計優化的,而md4和md5卻是面向32位的電?腦。

rivest在1989年開發出md2算法。在這個算法中,首先對信息進行數據補位,使信息的字節長度是16的倍數。然後,以壹個16位的檢驗和追加到?信息末尾。並且根據這個新產生的信息計算出散列值。後來,rogier和chauvaud發現如果忽略了檢驗和將產生md2沖突。md2算法的加密後結果?是唯壹的--既沒有重復。? 為了加強算法的安全性,rivest在1990年又開發出md4算法。md4算法同樣需要填補信息以確?保信息的字節長度加上448後能被512整除(信息字節長度mod?512?=?448)。然後,壹個以64位二進制表示的信息的最初長度被添加進來。信息被處理成512位damg?rd/merkle叠代結構的區塊,而且每個區塊要?通過三個不同步驟的處理。den?boer和bosselaers以及其他人很快的發現了攻擊md4版本中第壹步和第三步的漏洞。dobbertin向大家演示了如何利用壹部普通的個人電?腦在幾分鐘內找到md4完整版本中的沖突(這個沖突實際上是壹種漏洞,它將導致對不同的內容進行加密卻可能得到相同的加密後結果)。毫無疑問,md4就此?被淘汰掉了。? 盡管md4算法在安全上有個這麽大的漏洞,但它對在其後才被開發出來的好幾種信息安全加密算法的出現卻有著不可忽視的引導作用。除了md5以外,其中比較有名的還有sha-1、ripe-md以及haval等。?

壹年以後,即1991年,rivest開發出技術上更為趨近成熟的md5算法。它在md4的基礎上增加了"安全-帶子"(safety-belts)的?概念。雖然md5比md4稍微慢壹些,但卻更為安全。這個算法很明顯的由四個和md4設計有少許不同的步驟組成。在md5算法中,信息-摘要的大小和填充?的必要條件與md4完全相同。den?boer和bosselaers曾發現md5算法中的假沖突(pseudo-collisions),但除此之外就沒有其他被發現的加密後結果了。 van?oorschot和wiener曾經考慮過壹個在散列中暴力搜尋沖突的函數(brute-force?hash?function),而且他們猜測壹個被設計專門用來搜索md5沖突的機器(這臺機器在1994年的制造成本大約是壹百萬美元)可以平均每24天就找到壹?個沖突。但單從1991年到2001年這10年間,竟沒有出現替代md5算法的md6或被叫做其他什麽名字的新算法這壹點,我們就可以看出這個瑕疵並沒有?太多的影響md5的安全性。上面所有這些都不足以成為md5的在實際應用中的問題。並且,由於md5算法的使用不需要支付任何版權費用的,所以在壹般的情?況下(非絕密應用領域。但即便是應用在絕密領域內,md5也不失為壹種非常優秀的中間技術),md5怎麽都應該算得上是非常安全的了。

算法

MD表示消息摘要(Message Digest)。MD5是MD4的改進版,該算法對輸入的任意長度消息產生128位散列值(或消息摘要。MD5算法可用圖4-2表示。

對md5算法簡要的敘述可以為:md5以512位分組來處理輸入的信息,且每壹分組又被劃分為16個32位子分組,經過了壹系列的處理後,算法的輸出由四個32位分組組成,將這四個32位分組級聯後將生成壹個128位散列值。?

1) 附加填充位

首先填充消息,使其長度為壹個比512的倍數小64位的數。填充方法:在消息後面填充壹位1,然後填充所需數量的0。填充位的位數從1~512。

2) 附加長度

將原消息長度的64位表示附加在填充後的消息後面。當原消息長度大於264時,用消息長度mod 264填充。這時,消息長度恰好是512的整數倍。令M[0 1…N?1]為填充後消息的各個字(每字為32位),N是16的倍數。

3) 初始化MD緩沖區

初始化用於計算消息摘要的128位緩沖區。這個緩沖區由四個32位寄存器A、B、C、D表示。寄存器的初始化值為(按低位字節在前的順序存放):

A: 01 23 45 67

B: 89 ab cd ef

C: fe dc ba 98

D: 76 54 32 10

4) 按512位的分組處理輸入消息

這壹步為MD5的主循環,包括四輪,如圖4-3所示。每個循環都以當前的正在處理的512比特分組Yq和128比特緩沖值ABCD為輸入,然後更新緩沖內容。

四輪操作的不同之處在於每輪使用的非線性函數不同,在第壹輪操作之前,首先把A、B、C、D復制到另外的變量a、b、c、d中。這四個非線性函數分別為(其輸入/輸出均為32位字):

F(X,Y,Z) = (XY)((~X) Z)

G(X,Y,Z) = (XZ)(Y(~Z))

H(X,Y,Z) = XYZ

I(X,Y,Z) = Y(X(~Z))

其中,表示按位與;表示按位或;~表示按位反;表示按位異或。

此外,由圖4-4可知,這壹步中還用到了壹個有64個元素的表T[1..64],T[i]=232×abs(sin(i)),i的單位為弧度。

根據以上描述,將這壹步驟的處理過程歸納如下:

for i = 0 to N/16?1 do

/* 每次循環處理16個字,即512字節的消息分組*/

/*把第i個字塊(512位)分成16個32位子分組拷貝到X中*/

for j = 0 to 15 do

Set X[j] to M[i*16+j]

end /*j 循環*/

/*把A存為AA,B存為BB,C存為CC,D存為DD*/

AA = A

BB = B

CC = C

DD = D

/* 第壹輪*/

/* 令[abcd k s i]表示操作

a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s)

其中,Y<<<s表示Y循環左移s位*/

/* 完成下列16個操作*/

[ABCD 0 7 1 ?] [DABC 1 12 2 ?] [CDAB 2 17 3 ?] [BCDA 3 22 4 ?]

[ABCD 4 7 5 ?] [DABC 5 12 6 ?] [CDAB 6 17 7 ?] [BCDA 7 22 8 ?]

[ABCD 8 7 9 ?] [DABC 9 12 10] [CDAB 10 17 11] [BCDA 11 22 12]

[ABCD 12 7 13] [DABC 13 12 14] [CDAB 14 17 15] [BCDA 15 22 16]

/* 第二輪*/

/*令[abcd k s i]表示操作

a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s)*/

/*完成下列16個操作*/

[ABCD 1 5 17] [DABC 6 9 18] [CDAB 11 14 19] [BCDA 0 20 20]

[ABCD 5 5 21] [DABC 10 9 22] [CDAB 15 14 23] [BCDA 4 20 24]

[ABCD 9 5 25] [DABC 14 9 26] [CDAB 3 14 27] [BCDA 8 20 28]

[ABCD 13 5 29] [DABC 2 9 30] [CDAB 7 14 31] [BCDA 12 20 32]

/*第三輪*/

/*令[abcd k s t]表示操作

a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s)*/

/*完成以下16個操作*/

[ABCD 5 4 33] [DABC 8 11 34] [CDAB 11 16 35] [BCDA 14 23 36]

[ABCD 1 4 37] [DABC 4 11 38] [CDAB 7 16 39] [BCDA 10 23 40]

[ABCD 13 4 41] [DABC 0 11 42] [CDAB 3 16 43] [BCDA 6 23 44]

[ABCD 9 4 45] [DABC 12 11 46] [CDAB 15 16 47] [BCDA 2 23 48]

/*第四輪*/

/*令[abcd k s t]表示操作

a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s) */

/*完成以下16個操作*/

[ABCD 0 6 49] [DABC 7 10 50] [CDAB 14 15 51] [BCDA 5 21 52]

[ABCD 12 6 53] [DABC 3 10 54] [CDAB 10 15 55] [BCDA 1 21 56]

[ABCD 8 6 57] [DABC 15 10 58] [CDAB 6 15 59] [BCDA 13 21 60]

[ABCD 4 6 61] [DABC 11 10 62] [CDAB 2 15 63] [BCDA 9 21 64]

A = A + AA

B = B + BB

C = C + CC

D = D + DD

end /*i循環*/

5) 輸出

由A、B、C、D四個寄存器的輸出按低位字節在前的順序(即以A的低字節開始、D的高字節結束)得到128位的消息摘要。

以上就是對MD5算法的描述。MD5算法的運算均為基本運算,比較容易實現且速度很快。

安全散列函數(SHA)

算法

SHA是美國NIST和NSA***同設計的安全散列算法(Secure Hash Algorithm),用於數字簽名標準DSS(Digital Signature Standard)。SHA的修改版SHA–1於1995年作為美國聯邦信息處理標準公告(FIPS PUB 180–1)發布[2]。