SHA-1加密算法
SHA-1加密算法在加密學中扮演著極其重要的角色,可以用于實現(xiàn)數(shù)據(jù)保密、防止數(shù)據(jù)更改和身份驗證等功能。另外,SHA-1加密算法是當今眾多流行加密思想核心,幾乎無處不在。它在許多安全協(xié)議中廣為使用。那么,我們今天就給大家來介紹一下SHA-1加密算法。
SHA-1加密算法的原理
一、 函數(shù)與常量定義
1、 SHA-1加密算法的迭代函數(shù)
SHA-1加密算法使用80個連續(xù)的邏輯函數(shù)f0,f1,... ,f79。每個函數(shù)Ft(0≤t≤79)都操作三個32位字(B,C,D),產(chǎn)生一個32位字作為輸出。函數(shù)Ft(B,C,D)定義如下:
(1)、 SHA-1加密算法常量
SHA-1加密算法一共需要80個32位的常量(K0,K1,...K79),以16進制給出,它們?nèi)缦滤荆?/p>
(1)Kt=0x5A827999 _(0≤t≤19)
(2)Kt=0x6ED9EBA1 _(20≤t≤39)
(3)Kt=0x8F1BBCDC _(40≤t≤59)
(4)Kt=0xCA62C1D6 _(60≤t≤79)
2、預處理
在進行散列值計算之前,先要對需要加密的數(shù)據(jù)進行預處理。這一預處理由三部分組成:消息填充、分割已填充消息(將填充后的消息等分成m位處理塊)、為散列值計算設置初始化值。
(1)消息填充
假設原始消息(M)的長度是L位。首先,在消息最后加一位“1”,接著在這位“1”后面補k個“0”,使得L+1+k(即補位后的消息長度)滿足對512取模后余數(shù)是448。然后,添加最后的64位二進制數(shù)據(jù),這64位二進制數(shù)據(jù)就是原始L位消息(M)長度的二進制表示。例如,在8位ASCII碼系統(tǒng)中,消息“abc”長度為8×3=24,加上一位“1”,還要添加448-(24+1)=423位“0”,最后加上64位原始消息長度二進制表示后,就得到512位的填充消息:
(2)分割已填充消息
經(jīng)過消息填充后,還必須將數(shù)據(jù)劃分成m位一組的N塊的數(shù)據(jù)塊來提供給下面的散列值計算過程。對于SHA-1加密算法,填充過的消息被分割成N(M(1),M(2),...,M(N))塊,每塊512位。然后每組512位的輸入塊可以表示成16個32位的字,分別記為:M0(i),M1(i),...,M15(i)。
(3)設置初始散列值(H(0))
在安全散列算法開始其核心的散列迭代計算之前,還必須設置好正確的初始散列值H(0)。而H(0)的數(shù)量和字長取決于消息摘要的選擇。對于SHA-1加密算法,初始散列值由下面5個32位的字組成,其16進制表示如下:H0(0)=0x67452301,H1(0)=0xEFCDAB89,H2(0)=0x98BADCFE,H3(0)=0x10325476,H4(0)=0xC3D2E1F0。
3、散列值計算
在對原始數(shù)據(jù)消息進行了填充、分割后,就可以開始SHA-1加密算法的核心部分:散列值計算。
計算需要兩個緩沖區(qū),每個都由5個32位的字組成,還需要一個80個32位字的緩沖區(qū)。第一個5個字的緩沖區(qū)被標識為A,B,C,D,E。第二個5個字的緩沖區(qū)被標識為H0,H1,H2,H3,H4。80個字的緩沖區(qū)被標識為W0,W1,... ,W79。另外,還需要一個一個字的TEMP緩沖區(qū)。為了產(chǎn)生消息摘要,定義的16個字的數(shù)據(jù)塊M1,M2,... ,Mn會依次進行處理,處理每個數(shù)據(jù)塊包含80個步驟,在處理每個數(shù)據(jù)塊之前,緩沖區(qū)H0,H1,H2,H3,H4被設置初始值。為了處理Mi,需要進行如下步驟:
(1)將Mi分成16個字W0,W1,... ,W15(W0是最左邊的字)。
(2)對于 t = 16 到 79 令 Wt = S1(Wt-3 XOR Wt-8 XOR Wt- 14 XOR Wt-16)。
(3)令 A = H0, B = H1, C = H2, D = H3, E = H4。
(4) 對于 t = 0 到 79,執(zhí)行下面的循環(huán)
TEMP = S5(A) + ft(B,C,D) + E + Wt + Kt;
E = D; D = C; C = S30(B); B = A; A = TEMP;
(5)令 H0 = H0 + A, H1 = H1 + B, H2 = H2 + C, H3 = H3 + D, H4 = H4 + E。
在處理完所有的 Mn, 后,消息摘要是一個160位的字符串,以下面的順序標識
H0 H1 H2 H3 H4。
SHA-1加密算法實現(xiàn)與安全性
一、SHA-1加密算法實現(xiàn)
基于上述SHA-1加密算法原理的分析,SHA-1加密算法實現(xiàn)流程如圖所示:
SHA-1加密算法是一種易于實現(xiàn)并可以基于多種平臺的方便易行的安全算法,目前很多計算機語言,像C、Java、C++和PHP依照SHA-1加密算法的標準都能實現(xiàn)SHA-1。當然,受語言平臺應用性的制約,應用最廣泛的是C語言和Java語言。自身計算機上的消息認證一般采用C語言實現(xiàn)就足夠,不僅能夠保證良好的可移植性,而且實現(xiàn)起來也比較簡單、容易理解??紤]到網(wǎng)絡上的數(shù)字簽名,乃至電子商務等,一般采用Java實現(xiàn)代碼較簡單迅速,其可移植性和安全性也能得到更好的保證。
事實上,這里還存在一個潛在的問題,SHA-1加密算法加密信息摘要的計算速度并不總是能滿足要求。使得SHA-1加密算法的硬件實現(xiàn)也有很多途徑,如利用現(xiàn)場可編程門陣列不僅可以實現(xiàn)這種算法,并且某種程度上也能提高運算速度。特別是隨著數(shù)字通信領域的飛速發(fā)展,在急劇增長的無線移動設備領域,對加密系統(tǒng)的性能要求越來越嚴格。使得SHA-1加密算法軟硬件優(yōu)化方案的實現(xiàn)成為專家關注的熱點。
二、SHA-1加密算法安全性
SHA-1加密算法是由MD5算法演變而來的,它們之間最大的區(qū)別在于前者產(chǎn)生的摘要長度比后者長32bit。SHA-1對于強行攻擊,產(chǎn)生任何一個報文使之摘要等于給定報文摘要的難度為2160數(shù)量級的操作,較MD5的2128數(shù)量級操作要難。因此, SHA-1加密算法對抵抗強行攻擊的強度很高。同時,因為SHA-1加密算法的循環(huán)步驟有80次,比MD5算法的64次要多,所以其運行速度也較慢。從目前密碼學研究的最新進展來看,SHA-1加密算法雖然被發(fā)現(xiàn)存在缺陷,碰撞,但在近幾年內(nèi),SHA-1加密算法仍然被大量使用。
隨著互聯(lián)網(wǎng)與通信技術的飛速發(fā)展,大量重要的數(shù)據(jù)信息存儲在網(wǎng)絡服務器中,給人們帶來方便的同時也造成了巨大的信息安全隱患。在保證信息系統(tǒng)安全性的各種技術中,數(shù)據(jù)信息加密算法扮演了一個重要角色。雖然SHA-1加密技術由于其SHA-1。當然,受語言平臺應用性的制約,應用最廣泛的是C語言和Java語言。自身計算機上的消息認證一般采用C語言實現(xiàn)就足夠,不僅能夠保證良好的可移植性,而且實現(xiàn)起來也比較簡單、容易理解??紤]到網(wǎng)絡上的數(shù)字簽名,乃至電子商務等,一般采用Java實現(xiàn)代碼較簡單迅速,其可移植性和安全性也能得到更好的保證。
事實上,這里還存在一個潛在的問題,SHA-1加密算法加密信息摘要的計算速度并不總是能滿足要求。使得SHA-1加密算法的硬件實現(xiàn)也有很多途徑,如利用現(xiàn)場可編程門陣列不僅可以實現(xiàn)這種算法,并且某種程度上也能提高運算速度。特別是隨著數(shù)字通信領域的飛速發(fā)展,在急劇增長的無線移動設備領域,對加密系統(tǒng)的性能要求越來越嚴格。使得SHA-1加密算法軟硬件優(yōu)化方案的實現(xiàn)成為專家關注的熱點。
二、SHA-1加密算法安全性
SHA-1加密算法是由MD5算法演變而來的,它們之間最大的區(qū)別在于前者產(chǎn)生的摘要長度比后者長32bit。SHA-1對于強行攻擊,產(chǎn)生任何一個報文使之摘要等于給定報文摘要的難度為2160數(shù)量級的操作,較MD5的2128數(shù)量級操作要難。因此, SHA-1加密算法對抵抗強行攻擊的強度很高。同時,因為SHA-1加密算法的循環(huán)步驟有80次,比MD5算法的64次要多,所以其運行速度也較慢。從目前密碼學研究的最新進展來看,SHA-1加密算法雖然被發(fā)現(xiàn)存在缺陷,碰撞,但在近幾年內(nèi),SHA-1加密算法仍然被大量使用。
隨著互聯(lián)網(wǎng)與通信技術的飛速發(fā)展,大量重要的數(shù)據(jù)信息存儲在網(wǎng)絡服務器中,給人們帶來方便的同時也造成了巨大的信息安全隱患。在保證信息系統(tǒng)安全性的各種技術中,數(shù)據(jù)信息加密算法扮演了自身安全等級高,被廣泛應用在社會的各行各業(yè)。但隨著加密技術的不斷更新和發(fā)展,SHA-1加密算法將來可能會完全被其他更安全的算法取代。
小知識之迭代函數(shù):
在數(shù)學中,迭代函數(shù)是在碎形和動力系統(tǒng)中深入研究的對象。迭代函數(shù)是重復的與自身復合的函數(shù),這個過程叫做迭代。








