一、簡述
確切的說CRC不算是信息摘要算法,但是他的原理也是散列函數。他經歷過很多版本的改進?,F階段CRC-32算法是通信領域實現差錯控制的的主要應用。
二、模型分析(以傳遞壓縮數據模型為例):
甲方對自己的數據做循環冗余校驗(CRC)處理,然后向數據尾部追加冗余校驗碼,然后壓縮,發送數據給乙方
乙方解壓縮,分離數據和校驗碼。然后對分離出的數據進行CRC處理,看得出的冗余校驗碼和分離出的校驗碼是否一致。進而判斷數據的正確性。
三、java實現
package com.ca.test;
import java.util.zip.CRC32;
/**
* 測試循環冗余校驗
* @author kongqz
* */
public class CRC {
/**
* @param args
*/
public static void main(String[] args) {
String str="測試CRC-32";
CRC32 c32=new CRC32();
c32.update(str.getBytes());
String hex=Long.toHexString(c32.getValue());
System.out.println("原文:"+str);
System.out.println("CRC-32處理后:"+hex);
}
}
控制臺輸出結果:
原文:測試CRC-32
CRC-32處理后:8734140f
四、總結
1、CRC32算法很常見。類似消息摘要算法,只不過它是將原文和摘要信息組合后發送給對方
2、算法是公開的。驗證也很方便。上述算法調整下就可以做文件校驗了