From 0d8e7c852b52bf599e8c225a871485adec56a56e Mon Sep 17 00:00:00 2001 From: rbygrave Date: Thu, 29 Jul 2021 15:32:06 +1200 Subject: [PATCH] Change Checksum to use CRC32 --- .../java/io/ebeaninternal/server/util/Checksum.java | 8 ++++---- .../io/ebeaninternal/server/util/ChecksumTest.java | 11 ++++++++--- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/util/Checksum.java b/ebean-core/src/main/java/io/ebeaninternal/server/util/Checksum.java index 87ee6e7e8..8295703c1 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/util/Checksum.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/util/Checksum.java @@ -1,7 +1,7 @@ package io.ebeaninternal.server.util; import java.nio.charset.StandardCharsets; -import java.util.zip.Adler32; +import java.util.zip.CRC32; /** * Compute a checksum for String content. Use when we desire cheaper option than MD5. @@ -12,9 +12,9 @@ public final class Checksum { * Return the checksum for the given String input. */ public static long checksum(String input) { - Adler32 adler32 = new Adler32(); + CRC32 checksum = new CRC32(); final byte[] bytes = input.getBytes(StandardCharsets.UTF_8); - adler32.update(bytes, 0, bytes.length); - return adler32.getValue(); + checksum.update(bytes, 0, bytes.length); + return checksum.getValue(); } } diff --git a/ebean-core/src/test/java/io/ebeaninternal/server/util/ChecksumTest.java b/ebean-core/src/test/java/io/ebeaninternal/server/util/ChecksumTest.java index 58342df80..9eceabb0a 100644 --- a/ebean-core/src/test/java/io/ebeaninternal/server/util/ChecksumTest.java +++ b/ebean-core/src/test/java/io/ebeaninternal/server/util/ChecksumTest.java @@ -8,11 +8,16 @@ public class ChecksumTest { @Test public void checksum() { - final long val = Checksum.checksum("Hello world"); - assertThat(val).isEqualTo(413860925L); - + assertThat(val).isEqualTo(2346098258L); assertThat(Checksum.checksum("Hello world")).isEqualTo(val); assertThat(Checksum.checksum("hello world")).isNotEqualTo(val); } + + @Test + public void checksum_shortString() { + final long val0 = Checksum.checksum("2012-01-11"); + final long val1 = Checksum.checksum("2012-10-02"); + assertThat(val0).isNotEqualTo(val1); + } }