sha-1的演算法屬於密碼學的知識,但是這個地方主要是由於在ipv6生成stable address的時候用到,所以在ipv6的模組進行介紹。
sha1是一種資料加密的演算法,其思想就是將一段明文加密成乙個不可逆的密文。 因為是不可逆的,所以是無法通過密文推測出明文的內容,所以這個演算法不會被用來進行傳輸,一般主要是用來進行資料完整性校驗。在數字簽名之中應用比較廣泛, 數字簽名的原理是將要傳送的明文通過一種函式運算(hash)轉換成報文摘要(不同的明文對應不同的報文摘要),報文摘要加密後與明文一起傳送給接受方
sha1把訊息當成乙個位(bit)字串來處理。本文中,乙個字(word)是32位,而乙個位元組(byte)是8位。比如,字串「abc」可以被轉換成乙個位字串
01100001 01100010 01100011。它也可以被表示成16進製制字串: 0x616263.
簡單來講:sha-1演算法是把輸入二進位制串分成512位的塊,把二進位制串的位數儲存在最後64位,二者之間填充為0,依次對每個塊進行一些列高深的數**算,最後得到乙個160位的二進位制串。
下面說明下整個演算法的過程
1. 補位
先進行填充,保證資料是512或者其倍數,sha-1要求是512,。訊息必須進行補位,以使其長度在對512取模以後的餘數是448。
補位是這樣進行的:先補乙個1,然後再補0,直到長度滿足448。 如下圖所示
比如abc 原始的位元字串為:01100001 01100010 01100011 (長度為24bit)
在後面加乙個1, 後面填0,到448bit,然後後面的64保持資料的真正bit長度,為24
這樣就組成了乙個512bit的填充訊息
2.初始化hash value
在使用hash進行計算之前,需要初始化hash value, h(0),一共160bit,每個32bit
3)sha-1演算法
計算w0~w79,這一部將每乙個輸入分組,計算80個32位值(w0~w79),首先將輸入的512bit字串分成16個32位的組,命名為w0~w15
從上述公式中可以看出:在t屬於(0~15)的時候,w(t)為 512bit分成的16個分組, 當t為(16~79)的時候:
w(t) = w(t-3) xor w(t-8) xor w(t-14) xor w(t-16) 迴圈左移一位[rotl的解釋可以參考下圖]
經過上述計算能夠得到 w0~w79的值(根據要認證的資料塊計算而得出)
4) sha-1分組處理
通過上一步計算出w0~w79,這步主要是對這80個雙字進行處理,首先要有一些計算使用的常量k(t)
在t不同的範圍下,使用不同的分段函式
有了常量和函式,可以對t(0~79)內進行運算
先初始化a,b,c,d,e
在迴圈使用0~79 執行如下步驟
計算結果得到 a,b,c,d,e與原始的初始化的值相加
組成乙個160bit摘要,上面就描述的是對乙個512 塊的sha-1演算法,如果是多個512塊,進行迴圈即可。
組成的160位摘要資訊:h0h1h2h3h4
演算法的c語言實現可以參考:
1. sha-1使用big- endian
2. 沒有發現兩個不同的512塊在相同的演算法下產生相同的訊息摘要
3. 速度慢於md5
4.安全性高於md5
1. 2.
3. 4.
SHA1演算法實現及詳解
1 sha1演算法簡介 安全雜湊演算法 secure hash algorithm 主要適用於數字簽名標準 digital signature standard dss 裡面定義的數字簽名演算法 digital signature algorithm dsa 對於長度小於2 64位的訊息,sha1會...
Sha 1演算法詳解
一 hash函式和訊息完整性 二 常見的hash函式 三 sha 1演算法實現的基本步驟 1 將訊息摘要轉換成位字串 01100001 01100010 01100011 2 對轉換後的位字串進行補位操作 初始的資訊摘要 01100001 01100010 01100011 第一步補位 011000...
安全體系(三) SHA1演算法詳解
目錄 正文本文主要講述使用sha1演算法計算資訊摘要的過程。安全體系 零 加解密演算法 訊息摘要 訊息認證技術 數字簽名與公鑰證書 安全體系 一 des演算法詳解 安全體系 二 rsa演算法詳解 為保證傳輸資訊的安全,除了對資訊加密外,還需要對資訊進行認證。認證的目的有兩 一是驗證資訊的傳送者是合法...