public class CustomerCRC32 { private static long[] crc32Table = new long[256]; static { long crcValue; for (int i = 0; i < 256; i++) { crcValue = i; for (int j = 0; j < 8; j++) { if ((crcValue & 1) == 1) { crcValue = crcValue >> 1; crcValue = 0x00000000edb88320L ^ crcValue; } else { crcValue = crcValue >> 1; } } crc32Table[i] = crcValue; } } public static long getCrc32(byte[] bytes) { long resultCrcValue = 0x00000000ffffffffL; for (int i = 0; i < bytes.length; i++) { int index = (int) ((resultCrcValue ^ bytes[i]) & 0xff); resultCrcValue = crc32Table[index] ^ (resultCrcValue >> 8); } resultCrcValue = resultCrcValue ^ 0x00000000ffffffffL; return resultCrcValue; } public static void main(String[] args) { String testStr = "{"log":{"content":"2","time":"2016-01-05 10:17:24","type":1001,"version":"[5.0.8.12]"},"pcInfo":{"ip":"192.168.118.57","mac":"94-DE-80-A8-E6-EC","onlyId":"7CE81DDBF7D05F6AD89CD7D79FAA5905"},"user":{"name":"CFM"}}"; java.util.zip.CRC32 jdkCrc32 = new java.util.zip.CRC32(); jdkCrc32.update(testStr.getBytes()); System.out.println("jdk crc32: " + jdkCrc32.getValue()); System.out.println("test crc32: " + getCrc32(testStr.getBytes())); } }