@Override
    public Checksum compute(final InputStream in, final TransferStatus status) throws BackgroundException {
        final byte[] digest = this.digest("SHA-256", this.normalize(in, status), status);
        return new Checksum(HashAlgorithm.sha256, digest);
    }
@Test
    public void testNormalize() throws Exception {
        assertEquals("c96c6d5be8d08a12e7b5cdc1b207fa6b2430974c86803d8891675e76fd992c20",
            new SHA256ChecksumCompute().compute(IOUtils.toInputStream("input", Charset.defaultCharset()),
                new TransferStatus()).hash);
        assertEquals("c96c6d5be8d08a12e7b5cdc1b207fa6b2430974c86803d8891675e76fd992c20",
            new SHA256ChecksumCompute().compute(IOUtils.toInputStream("_input", Charset.defaultCharset()),
                new TransferStatus().withOffset(1)).hash);
        assertEquals("c96c6d5be8d08a12e7b5cdc1b207fa6b2430974c86803d8891675e76fd992c20",
            new SHA256ChecksumCompute().compute(IOUtils.toInputStream("_input_", Charset.defaultCharset()),
                new TransferStatus().withOffset(1).withLength(5)).hash);
    }