欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java 和c crc32校驗

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

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

Java實現

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類來實現校驗,其中Bytes數組表示需要進行校驗的數據,然后調用Checksum的update方法來進行計算。

C實現

#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,該表中保存了預先計算好的值。在計算crc值的時候,我們將crc值與buf中的每一個字節進行異或,然后再用這個值去查詢crc32_table中的值,得到一個新的crc值,最后將結果返回。

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