From 19c601817cd7b0621df134168782c4baa5dc74bd Mon Sep 17 00:00:00 2001 From: LamGC Date: Sun, 16 Jan 2022 21:12:48 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=AD=A3=E4=BA=86=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E5=91=BD=E5=90=8D=E9=94=99=E8=AF=AF=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 由于 MessageDigest 不适用于多线程环境, 导致用于创建数据库名称的数据会不断累加, 最终出现 botToken 无法对应数据库的问题. --- .../src/main/java/net/lamgc/scalabot/util/ByteUtils.java | 3 ++- scalabot-app/src/main/kotlin/BotDBMaker.kt | 4 +--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/scalabot-app/src/main/java/net/lamgc/scalabot/util/ByteUtils.java b/scalabot-app/src/main/java/net/lamgc/scalabot/util/ByteUtils.java index ed529e4..3888fdf 100644 --- a/scalabot-app/src/main/java/net/lamgc/scalabot/util/ByteUtils.java +++ b/scalabot-app/src/main/java/net/lamgc/scalabot/util/ByteUtils.java @@ -8,7 +8,8 @@ final class ByteUtils { public static String bytesToHexString(byte[] bytes) { StringBuilder builder = new StringBuilder(); for (byte aByte : bytes) { - builder.append(Integer.toHexString(aByte)); + String hexBit = Integer.toHexString(aByte & 0xFF); + builder.append(hexBit.length() == 1 ? "0" + hexBit : hexBit); } return builder.toString(); } diff --git a/scalabot-app/src/main/kotlin/BotDBMaker.kt b/scalabot-app/src/main/kotlin/BotDBMaker.kt index 5bcdefb..37a3f8d 100644 --- a/scalabot-app/src/main/kotlin/BotDBMaker.kt +++ b/scalabot-app/src/main/kotlin/BotDBMaker.kt @@ -8,10 +8,8 @@ import java.nio.charset.StandardCharsets import java.security.MessageDigest internal object BotDBMaker { - - private val digest: MessageDigest = MessageDigest.getInstance("SHA-256") - fun getBotMaker(botAccount: BotAccount): DBContext { + val digest: MessageDigest = MessageDigest.getInstance("SHA-256") val digestBytes = digest.digest(botAccount.token.toByteArray(StandardCharsets.UTF_8)) val dbPath = AppPaths.DATA_DB.path + "${digestBytes.toHaxString()}.db" val db = DBMaker.fileDB(dbPath)