From 3a5973a04dab4ac5532cdbd595d2645503db9968 Mon Sep 17 00:00:00 2001 From: FC Stegerman Date: Sun, 16 Jul 2023 01:22:07 +0200 Subject: [PATCH] Utils: add checksum() --- .../main/java/protect/card_locker/Utils.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/app/src/main/java/protect/card_locker/Utils.java b/app/src/main/java/protect/card_locker/Utils.java index 5bbaeeb08..bae7e5df9 100644 --- a/app/src/main/java/protect/card_locker/Utils.java +++ b/app/src/main/java/protect/card_locker/Utils.java @@ -50,6 +50,8 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.math.BigDecimal; import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; import java.text.NumberFormat; import java.text.ParseException; import java.util.Calendar; @@ -647,4 +649,22 @@ public class Utils { public static int getHeaderColor(Context context, LoyaltyCard loyaltyCard) { return loyaltyCard.headerColor != null ? loyaltyCard.headerColor : LetterBitmap.getDefaultColor(context, loyaltyCard.store); } + + public static String checksum(InputStream input) throws IOException { + try { + MessageDigest md = MessageDigest.getInstance("SHA-1"); + byte[] buf = new byte[4096]; + int len; + while ((len = input.read(buf)) != -1) { + md.update(buf, 0, len); + } + StringBuilder sb = new StringBuilder(); + for (byte b : md.digest()) { + sb.append(String.format("%02x", b)); + } + return sb.toString(); + } catch (NoSuchAlgorithmException _e) { + return null; + } + } }