色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java 和c crc32校驗

李中冰2年前9瀏覽0評論

Java和C都是非常流行的編程語言,而在加密和校驗方面,CRC32校驗算法也是一種非常基礎(chǔ)的算法,下面我們來看看Java和C中實現(xiàn)CRC32校驗的代碼。

Java實現(xiàn)

import java.util.zip.CRC32;
import java.util.zip.Checksum;
public class Crc32Util {
public static long getCrc32(String s) {
byte[] bytes = s.getBytes();
Checksum checksum = new CRC32();
checksum.update(bytes, 0, bytes.length);
return checksum.getValue();
}
}

上面的代碼使用了Java自帶的Zip包中的CRC32類來實現(xiàn)校驗,其中Bytes數(shù)組表示需要進(jìn)行校驗的數(shù)據(jù),然后調(diào)用Checksum的update方法來進(jìn)行計算。

C實現(xiàn)

#includestatic uint32_t crc32_table[256];
void init_crc32_table(void) {
uint32_t c;
uint32_t i, j;
for (i = 0; i< 256; i++) {
c = i;
for (j = 0; j< 8; j++) {
if (c & 1)
c = 0xEDB88320L ^ (c >>1);
else
c = c >>1;
}
crc32_table[i] = c;
}
}
uint32_t crc32(uint32_t crc, unsigned char* buf, uint32_t len) {
uint32_t i;
for (i = 0; i< len; i++) {
crc = crc32_table[(crc ^ buf[i]) & 0xFF] ^ (crc >>8);
}
return crc;
}

上面的代碼中,首先需要初始化crc32_table,該表中保存了預(yù)先計算好的值。在計算crc值的時候,我們將crc值與buf中的每一個字節(jié)進(jìn)行異或,然后再用這個值去查詢crc32_table中的值,得到一個新的crc值,最后將結(jié)果返回。

無論是Java還是C,CRC32校驗都是一種非常經(jīng)典的算法,在很多地方都有廣泛應(yīng)用,希望本文能為讀者帶來一些幫助。