Mark Adler has posted an optimized crc64 implementation on stackoverflow[1]. This can be reasonably easily ported to java (that post has a link to java impl on github[2] which warrants a little clean up, but gives a decent idea).
I did a quick benchmark calculating the crc64 over 8KB and the results were impressive: Benchmark Mode Cnt Score Error Units Hash64Benchmark.adler avgt 5 6908.677 ± 47.790 ns/op Hash64Benchmark.crc64 avgt 5 16343.091 ± 64.089 ns/op Thanks, Brett [1] - https://stackoverflow.com/questions/20562546/how-to-get-crc64-distributed-calculation-use-its-linearity-property/20579405#20579405 [2] - https://github.com/MrBuddyCasino/crc-64/blob/master/crc-64/src/main/java/net/boeckling/crc/CRC64.java