Java中循環(huán)冗余校驗(yàn)(CRC32)的實(shí)現(xiàn)
前言
本文主要給大家介紹了關(guān)于Java實(shí)現(xiàn)循環(huán)冗余校驗(yàn)(CRC32)的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細(xì)的介紹吧。
CRC32簡(jiǎn)介
CRC校驗(yàn)實(shí)用程序庫 在數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)通訊領(lǐng)域,為了保證數(shù)據(jù)的正確,就不得不采用檢錯(cuò)的手段。在諸多檢錯(cuò)手段中,CRC是最著名的一種。CRC的全稱是循環(huán)冗余校驗(yàn)。
CRC32檢錯(cuò)能力極強(qiáng),開銷小,易于用編碼器及檢測(cè)電路實(shí)現(xiàn)。從其檢錯(cuò)能力來看,它所不能發(fā)現(xiàn)的錯(cuò)誤的幾率僅為0.0047%以下。從性能上和開銷上考慮,均遠(yuǎn)遠(yuǎn)優(yōu)于奇偶校驗(yàn)及算術(shù)和校驗(yàn)等方式。因而,在數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)通訊領(lǐng)域,CRC無處不在:著名的通訊協(xié)議X.25的FCS(幀檢錯(cuò)序列)采用的是CRC-CCITT,ARJ、LHA等壓縮工具軟件采用的是CRC32,磁盤驅(qū)動(dòng)器的讀寫采用了CRC16,通用的圖像存儲(chǔ)格式GIF、TIFF等也都用CRC作為檢錯(cuò)手段。
CRC實(shí)現(xiàn)
package com.jianggujin.codec; import java.io.IOException; import java.io.InputStream; import java.util.zip.CRC32; /** * CRC32 * * @author jianggujin * */ public class HQCRC32 { private static HQCRC32 crc32 = new HQCRC32(); public static HQCRC32 getInstance() { return crc32; } private HQCRC32() { } private static final int STREAM_BUFFER_LENGTH = 1024; public long encrypt(byte[] data) { CRC32 crc32 = new CRC32(); crc32.update(data); return crc32.getValue(); } public long encrypt(InputStream data) throws IOException { final byte[] buffer = new byte[STREAM_BUFFER_LENGTH]; int read = data.read(buffer, 0, STREAM_BUFFER_LENGTH); CRC32 crc32 = new CRC32(); while (read > -1) { crc32.update(buffer, 0, read); read = data.read(buffer, 0, STREAM_BUFFER_LENGTH); } return crc32.getValue(); } }
測(cè)試代碼:
import org.junit.Test; import com.jianggujin.codec.HQCRC32; public class CRC32Test { HQCRC32 crc32 = HQCRC32.getInstance(); @Test public void encode() { byte[] data = "jianggujin".getBytes(); long result = crc32.encrypt(data); System.err.println(result); } }
測(cè)試結(jié)果:
724585211
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
java中List刪除時(shí)需要的注意事項(xiàng)
最近在利用java中的LIST在刪除時(shí)發(fā)現(xiàn)了一個(gè)錯(cuò)我,通過查找相關(guān)的資料終于解決了,覺著有必要分享處理給同樣遇到這個(gè)問題的朋友參考,下面這篇文章主要介紹了java中List刪除時(shí)需要的注意事項(xiàng),需要的朋友可以一起來看看吧。2017-01-01Jmeter的接口測(cè)試詳細(xì)步驟并實(shí)現(xiàn)業(yè)務(wù)閉環(huán)
這篇文章主要介紹了Jmeter的接口測(cè)試詳細(xì)步驟并實(shí)現(xiàn)業(yè)務(wù)閉環(huán),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-08-08java list與數(shù)組之間的轉(zhuǎn)換詳細(xì)解析
以下是對(duì)java中l(wèi)ist與數(shù)組之間的轉(zhuǎn)換進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下2013-09-09