一、簡述
確切的說CRC不算是信息摘要算法疗隶,但是他的原理也是散列函數(shù)躬柬。他經(jīng)歷過很多版本的改進。現(xiàn)階段CRC-32算法是通信領(lǐng)域?qū)崿F(xiàn)差錯控制的的主要應(yīng)用抽减。
二允青、模型分析(以傳遞壓縮數(shù)據(jù)模型為例):
甲方對自己的數(shù)據(jù)做循環(huán)冗余校驗(CRC)處理,然后向數(shù)據(jù)尾部追加冗余校驗碼,然后壓縮颠锉,發(fā)送數(shù)據(jù)給乙方
乙方解壓縮法牲,分離數(shù)據(jù)和校驗碼。然后對分離出的數(shù)據(jù)進行CRC處理琼掠,看得出的冗余校驗碼和分離出的校驗碼是否一致拒垃。進而判斷數(shù)據(jù)的正確性。
三瓷蛙、java實現(xiàn)
package com.ca.test;
import java.util.zip.CRC32;
/**
* 測試循環(huán)冗余校驗
* @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);
}
}
控制臺輸出結(jié)果:
原文:測試CRC-32
CRC-32處理后:8734140f
四悼瓮、總結(jié)
1、CRC32算法很常見艰猬。類似消息摘要算法横堡,只不過它是將原文和摘要信息組合后發(fā)送給對方
2、算法是公開的冠桃。驗證也很方便命贴。上述算法調(diào)整下就可以做文件校驗了