CRC32 MD5 SHA1演算法校驗介紹

2021-08-29 01:51:09 字數 2092 閱讀 5279

**:

crc32、md5和sha1是目前用來校驗檔案資訊真實性的主要手段,使用這些校驗演算法可以發現儲存或傳輸的資訊是否受到損壞或篡改,防止檔案或資訊被惡意篡改。下面將分別介紹這幾種校驗演算法。

1、crc32

crc全稱為cyclic redundancy check,又叫迴圈冗餘校驗。crc是目前使用中最老的一種校驗演算法,它是由w. wesley peterson在2023年發表的**中提出,crc是種根據網路資料封包或電腦檔案等資料產生簡短固定位數校驗碼的一種雜湊函式(hash,把任意長度的輸入通過雜湊演算法,最終變換成固定長度的摘要輸出,其結果就是雜湊值,按照hash演算法,hash具有單向性,不可逆性),主要用來檢測或校驗資料傳輸或者儲存後可能出現的錯誤。生成的數字在傳輸或者儲存之前計算出來並且附加到資料後面,然後接收方進行檢驗確定資料是否發生變化。一般來說,迴圈冗餘校驗的值都是32位的整數。由於本函式易於用二進位制的電腦硬體使用、容易進行數學分析並且尤其善於檢測傳輸通道干擾引起的錯誤,因此獲得廣泛應用。

儘管crc在錯誤檢測中非常有用,但crc並不能可靠地校驗資料完整性,這是因為crc多項式是線性結構,可以非常容易地通過改變資料方式達到crc碰撞,這裡給乙個更加通俗的解釋,假設一串帶有crc校驗的**在傳輸中,如果連續出現差錯,當出錯次數達到一定次數時,那麼幾乎可以肯定會出現一次碰撞(值不對但crc結果正確),但隨著crc資料位增加,碰撞機率會顯著降低,比如crc32比crc16具有更可靠的驗證性,crc64又會比crc32更可靠,當然這都是按照itu規範標準條件下。

正因為crc具有以上特點,對於網路上傳輸的檔案類很少只使用crc作為校驗依據,檔案傳輸相比通訊底層傳輸風險更大,很容易受到人為干預影響。

2、md5

md5全稱為message-digest algorithm 5,又叫摘要演算法和雜湊演算法。是ronald l. rivest在2023年間提出的,md5由md4、md3、md2改進而來,md5雜湊長度通常是128位,是目前被大量廣泛使用的雜湊演算法之一,主要用於密碼加密和檔案校驗等,雖然md5比crc的安全可靠性要高的多,但目前已經找到可行的破解方法。現在網上雖然出現有些破解**和軟體,不過可以肯定實際作用範圍相當有限,比如,即使黑客拿到了password md5值,除了暴力破解,即使找到碰撞結果也未必能夠影響使用者安全問題,因為對於密碼還要限定位數、型別等,但是如果是面向數字簽名等應用,可能就會被破解掉。

3、sha1

sha全稱為secure hash algorithm,又叫安全雜湊演算法。sha是由美國****局(nsa)所設計,並由美國國家標準與技術研究院(nist)發布,sha家族演算法有sha-1、sha-224、sha-256、sha-384和sha-512(後四者通常並稱sha2),原理和md4、md5相似。sha可將乙個最大2^64位(2305843009213693952位元組)資訊,轉換成一串160位(20位元組)的雜湊值(摘要資訊),是目前應用最廣的hash演算法。同md5一樣,從理論角度,sha1也不是絕對可靠,目前也已經找到sha1的碰撞條件,但「實用」的碰撞演算法軟體還沒出現。於是美國nist又開始使用sha2,研究更新的加密演算法。

相同點:

crc、md5、sha1都是通過對資料進行計算,來生成乙個校驗值,該校驗值用來校驗資料的完整性。

不同點:

1. 演算法不同。crc採用多項式除法,md5和sha1使用的是替換、輪轉等方法;

2. 校驗值的長度不同。crc校驗位的長度跟其多項式有關係,一般為16位或32位;md5是16個位元組(128位);sha1是20個位元組(160位);

3. 校驗值的稱呼不同。crc一般叫做crc值;md5和sha1一般叫做雜湊值(hash)或雜湊值;

4. 安全性不同。這裡的安全性是指檢錯的能力,即資料的錯誤能通過校驗位檢測出來。crc的安全性跟多項式有很大關係,相對於md5和sha1要弱很多;md5的安全性很高,不過大概在04年的時候被山東大學的王小雲破解了;sha1的安全性最高。

5. 效率不同,crc的計算效率很高;md5和sha1比較慢。

6. 用途不同。crc一般用作通訊資料的校驗(畢竟效率高適用於通訊資料校驗);md5和sha1用於安全(security)領域,比如檔案校驗、數字簽名等。

個人想法:

採用哪種演算法應該視具體情況而定,反正就是在安全性與效率之間進行平衡,如果資料或者檔案不重要或者有其他方式保證安全那麼效率應該優先,反之則安全性優先。

CRC32 MD5 SHA1演算法校驗介紹

crc32 md5和sha1是目前用來校驗檔案資訊真實性的主要手段,使用這些校驗演算法可以發現儲存或傳輸的資訊是否受到損壞或篡改,防止檔案或資訊被惡意篡改。下面將分別介紹這幾種校驗演算法。1 crc32 w.wesley peterson crc全稱為cyclic redundancy check,...

雜湊1 04計算 MD5,SHA1和CRC32

更新於2006年10月14日 hash是乙個小型gui工具,用於在許多檔案上執行md5,sha1和crc32雜湊函式。還可以選擇顯示檔案大小和修改日期。視窗中顯示的結果可以輕鬆複製到windows剪貼簿或儲存到文字檔案中。該程式允許直接瀏覽多個檔案,檔案也可以拖放到視窗上。也可以在命令列上提供檔案 ...

資料安全之MD5 SHA 1 CRC32區別

crc32 計算乙個字串的 crc32 多項式 生成 string 引數的 32 位迴圈冗餘校驗碼多項式 這句話從英文翻譯過來的,不正確,準確的說應該是這麼理解 以32位迴圈冗餘校驗多項式演算法,來計算乙個字串,返回乙個 可能帶符號的 整數。使用方法 這個函式的功能類似於md5演算法 sha1演算法...