From 18ff7a8118763ccb22e81632337552b8c78b4b93 Mon Sep 17 00:00:00 2001 From: gallonyin Date: Sun, 19 Nov 2023 00:47:13 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E6=89=A7=E8=A1=8C=E9=98=9F=E5=88=97?= =?UTF-8?q?=E5=8E=BB=E9=87=8D=E7=AE=97=E6=B3=95=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/yameida/worktool/service/MyLooper.kt | 3 +- .../worktool/utils/StringFeatureUtil.java | 33 +++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/org/yameida/worktool/utils/StringFeatureUtil.java diff --git a/app/src/main/java/org/yameida/worktool/service/MyLooper.kt b/app/src/main/java/org/yameida/worktool/service/MyLooper.kt index f6f41ee..4147eef 100644 --- a/app/src/main/java/org/yameida/worktool/service/MyLooper.kt +++ b/app/src/main/java/org/yameida/worktool/service/MyLooper.kt @@ -14,6 +14,7 @@ import org.yameida.worktool.model.ExecCallbackBean import org.yameida.worktool.model.WeworkMessageBean import org.yameida.worktool.model.WeworkMessageListBean import org.yameida.worktool.utils.FloatWindowHelper +import org.yameida.worktool.utils.StringFeatureUtil import java.nio.charset.StandardCharsets import java.util.LinkedHashSet import kotlin.concurrent.thread @@ -111,7 +112,7 @@ object MyLooper { } else { WeworkController.mainLoopRunning = false LogUtils.v("加入指令到执行队列", if (message.fileBase64.isNullOrEmpty()) GsonUtils.toJson(message) else message.type) - val messageWhat = message.type * message.hashCode() / 1000 + text.length + val messageWhat = StringFeatureUtil.generateFeatureValue(text) if (Constant.duplicationFilter) { getInstance().removeMessages(messageWhat) } diff --git a/app/src/main/java/org/yameida/worktool/utils/StringFeatureUtil.java b/app/src/main/java/org/yameida/worktool/utils/StringFeatureUtil.java new file mode 100644 index 0000000..1e73c3c --- /dev/null +++ b/app/src/main/java/org/yameida/worktool/utils/StringFeatureUtil.java @@ -0,0 +1,33 @@ +package org.yameida.worktool.utils; + +import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; + +public class StringFeatureUtil { + + public static int generateFeatureValue(String input) { + try { + // 计算MD5哈希值 + MessageDigest md = MessageDigest.getInstance("MD5"); + byte[] md5Hash = md.digest(input.getBytes(StandardCharsets.UTF_8)); + + // 计算字符串长度并取余 + int length = input.length() % 1024; + + // 将MD5哈希值的前面位数组成int值 + int md5Value = 0; + for (int i = 0; i < Math.min(4, md5Hash.length); i++) { + md5Value = (md5Value << 8) | (md5Hash[i] & 0xFF); + } + + // 将字符串长度合并到特征值的最后10位 + int featureValue = (md5Value << 10) | length; + + return featureValue; + } catch (Exception e) { + e.printStackTrace(); + return -1; // 错误情况下返回-1 + } + } + +}