Не понимаю ли я использование классов CRC32
или CheckedInputStream
для вычисления контрольной суммы путем постоянного обновления с последними данными? Когда вход <128KiB, генерируется действительный CRC32. Что-нибудь больше чем 128 КБ, и контрольная сумма терпит неудачу. Ниже приведен код, с которым я работаю (используя объект <code>CRC32 и BufferedInputStream
, но та же проблема возникает, если я использую CheckedInputStream
для отслеживания CRC32).
Буду признателен за любые советы или комментарии, спасибо
private static long calcCRC32() throws IOException {
BufferedInputStream inStream = new BufferedInputStream(System.in);
int BLOCK_SIZE = 128*1024; //128KiB
int len;
byte[] buffer = new byte[BLOCK_SIZE];
CRC32 crc32 = new CRC32();
crc32.reset();
while((len = bufferedInputStream.read(buffer, 0, BLOCK_SIZE)) > 0){
crc32.update(buffer, 0, len);
buffer = new byte[BLOCK_SIZE];
}
return crc32.getValue();
}