1. 程式人生 > >CRC、MD5和SHA1的區別?

CRC、MD5和SHA1的區別?

錯誤 校驗位 個數 關系 哈希 散列 校驗碼 用途 安全

crc32算法:以32位循環冗余校驗多項式算法,來計算一個字符串,返回一個(可能帶符號的)整數。

即,生成 string 參數的 32 位循環冗余校驗碼多項式

使用方法:
這個函數的功能類似於md5算法、sha1算法加密。這個函數的使用過程中,需要多考慮取返回的整數的絕對值就可以了。
至於如何能做到檢查傳輸的數據是否完整:
參考md5的常見使用場景。
32位循環冗余校驗多項式:這個是一個數學算法,你可以當作他是一個md5算法的數字版
經常有人問,說CRC、MD5、SHA1都是計算一個校驗值的,到底有何區別?
相同點:
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)領域,比如文件校驗、數字簽名等。

CRC、MD5和SHA1的區別?