一、hash函式和訊息完整性
二、常見的hash函式
三、sha-1演算法實現的基本步驟
1、將訊息摘要轉換成位字串
01100001 01100010 01100011
2、對轉換後的位字串進行補位操作
初始的資訊摘要:01100001 01100010 01100011
第一步補位: 01100001 01100010 01100011 1
.....
補位最後一位: 01100001 01100010 01100011 10.......0(後面補了423個0)
而後我們將補位操作後的資訊摘要轉換為十六進製制,如下所示:
61626380 00000000 00000000 00000000
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000
00000000 00000000
3、附加長度值
61626380 00000000 00000000 00000000
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000018
因為「abc」佔3個位元組,即24位 ,換算為十六進製制即為0x18。
4、初始化快取
h0 = 0x67452301
h1 = 0xefcdab89
h2 = 0x98badcfe
h3 = 0x10325476
h4 = 0xc3d2e1f0
如果大家對md-5不陌生的話,會發現乙個重要的現象,其前四個與md-5一樣,但不同之處為儲存為big-endien format.
5、計算訊息摘要
(1)、迴圈左移操作符sn(x),x是乙個字,也就是32bit大小的變數,n是乙個整數且0<=n<=32。sn(x) = (x<>32-n)
(2)、在程式中所要用到的常量,這一系列常量字k(0)、k(1)、...k(79),將其以十六進製制表示如下:
kt = 0x5a827999 (0 <= t <= 19)
kt = 0x6ed9eba1 (20 <= t <= 39)
kt = 0x8f1bbcdc (40 <= t <= 59)
kt = 0xca62c1d6 (60 <= t <= 79)
(3)、所要用到的一系列函式
ft(b,c,d) ((b&c)|((~b)&d)) (0 <= t <= 19)
ft(b,c,d) (b^c^d) (20 <= t <= 39)
ft(b,c,d) ((b&c)|(b&d)|(c&d)) (40 <= t <= 59)
ft(b,c,d) (b^c^d) (60 <= t <= 79)
(4)、計算
計算需要乙個緩衝區,由5個32位的字組成,還需要乙個80個32位字的緩衝區。第乙個5個字的緩衝區被標識為a,b,c,d,e。80個字的緩衝區被標識為w0, w1,..., w79
另外還需要乙個乙個字的temp緩衝區。
為了產生訊息摘要,在第4部分中定義的16個字的資料塊m1, m2,..., mn
會依次進行處理,處理每個資料塊mi 包含80個步驟。
現在開始處理m1, m2, ... , mn。為了處理 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,執行下面的迴圈
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.
對於sha256,sha384,sha512。你也可以用相似的辦法來計算訊息摘要。對訊息進行補位的演算法完全是一樣的。
SHA1演算法實現及詳解
1 sha1演算法簡介 安全雜湊演算法 secure hash algorithm 主要適用於數字簽名標準 digital signature standard dss 裡面定義的數字簽名演算法 digital signature algorithm dsa 對於長度小於2 64位的訊息,sha1會...
SHA1演算法原理
1 sha1演算法簡介 安全雜湊演算法 secure hash algorithm 主要適用於數字簽名標準 digital signature standard dss 裡面定義的數字簽名演算法 digital signature algorithm dsa 對於長度小於2 64位的訊息,sha1會...
SHA1 摘要演算法
sha1 演算法 訊息摘要演算法,把訊息按照512 bits進行分組,不斷的對5個int型變數進行計算,直到所有訊息都運算完畢。最終得到 160 bit 即 20 位元組的雜湊值。流程圖 c語言實現 用到的資料結構 sha1演算法的上下文,儲存一些狀態,中間資料,結果 typedef struct ...