6

CRC32またはCheckedInputStreamクラスのいずれかを使用して、最新の入力で継続的に更新することによってチェックサムを計算することを誤解していますか? 入力が <= 128KiB の場合、有効な CRC32 が生成されます。128KiB を超えると、チェックサムが失敗します。以下は私が作業しているコードです(CRC32オブジェクトを使用していますが、CRC32を追跡するためにBufferedInputStreamaを使用すると同じ問題が発生します)。CheckedInputStream

アドバイスやコメントをいただければ幸いです。

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();
}
4

0 に答える 0