Sha 1演算法詳解

2021-09-21 23:57:51 字數 2295 閱讀 8885

一、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 ...