refactor: replace SparkMD5 with CryptoJS for MD5 hashing and remove unused dependencies

This commit is contained in:
troyeguo
2026-05-28 16:46:45 +08:00
parent ec690aeea9
commit ea9d271074
5 changed files with 27 additions and 30 deletions

View File

@@ -72,7 +72,6 @@
"@types/react-i18next": "^8.1.0",
"@types/react-router-dom": "^5.1.6",
"@types/react-tooltip": "^4.2.4",
"@types/spark-md5": "^3.0.2",
"@types/underscore": "^1.13.0",
"@types/ws": "^8.5.5",
"classnames": "^2.2.6",
@@ -98,7 +97,6 @@
"redux": "^4.0.5",
"redux-thunk": "^2.3.0",
"source-map-explorer": "^2.5.2",
"spark-md5": "^3.0.1",
"typescript": "^5.9.3",
"wait-on": "^7.0.1"
},

View File

@@ -2,7 +2,7 @@ import React from "react";
import "./opdsDialog.css";
import { Trans } from "react-i18next";
import toast from "react-hot-toast";
import SparkMD5 from "spark-md5";
import CryptoJS from "crypto-js";
import { ConfigService } from "../../../assets/lib/kookit-extra-browser.min";
import {
OPDSCatalog,
@@ -106,7 +106,7 @@ function buildDigestAuthHeader(
const qop = qopList.includes("auth") ? "auth" : qopList[0] || "";
const nc = "00000001";
const cnonce = randomString();
const hash = (value: string) => SparkMD5.hash(value);
const hash = (value: string) => CryptoJS.MD5(value.trim()).toString();
let ha1 = hash(`${username}:${realm}:${password}`);
if (algorithm === "MD5-SESS") {

View File

@@ -1,6 +1,6 @@
import Plugin from "../models/Plugin";
import { isElectron } from "react-device-detect";
import SparkMD5 from "spark-md5";
import CryptoJS from "crypto-js";
import {
CommonTool,
ConfigService,
@@ -54,19 +54,29 @@ export const supportedFormats = [
];
export const calculateFileMD5 = (file: File): Promise<string> => {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onload = (event) => {
const arrayBuffer = event.target?.result as ArrayBuffer;
const md5Hash = SparkMD5.ArrayBuffer.hash(arrayBuffer);
resolve(md5Hash);
};
reader.onerror = (error) => {
reject(error);
};
reader.readAsArrayBuffer(file);
if (isElectron) {
const reader = new FileReader();
reader.onload = (event) => {
const arrayBuffer = event.target?.result as ArrayBuffer;
const crypto = window.require("crypto");
const hash = crypto.createHash("md5");
hash.update(Buffer.from(arrayBuffer));
resolve(hash.digest("hex"));
};
reader.onerror = (error) => reject(error);
reader.readAsArrayBuffer(file);
} else {
const reader = new FileReader();
reader.onload = (event) => {
const arrayBuffer = event.target?.result as ArrayBuffer;
const wordArray = CryptoJS.lib.WordArray.create(
new Uint8Array(arrayBuffer) as any
);
resolve(CryptoJS.MD5(wordArray).toString());
};
reader.onerror = (error) => reject(error);
reader.readAsArrayBuffer(file);
}
});
};
export const vexPromptAsync = (message, placeholder = "", value = "") => {

View File

@@ -1,4 +1,3 @@
import SparkMD5 from "spark-md5";
import {
ConfigService,
TokenService,
@@ -300,7 +299,7 @@ export const verifyAndBuildKOReaderSyncConfig = async (params: {
serverUrl: normalizeServerUrl(params.serverUrl),
username: (params.username || "").trim(),
passwordHash: (params.password || "").trim()
? SparkMD5.hash((params.password || "").trim())
? CryptoJS.MD5((params.password || "").trim()).toString()
: (params.passwordHash || "").trim(),
};
if (!config.serverUrl || !config.username || !config.passwordHash) {

View File

@@ -4439,11 +4439,6 @@
dependencies:
"@types/node" "*"
"@types/spark-md5@^3.0.2":
version "3.0.2"
resolved "https://registry.yarnpkg.com/@types/spark-md5/-/spark-md5-3.0.2.tgz#da2e8a778a20335fc4f40b6471c4b0d86b70da55"
integrity sha512-82E/lVRaqelV9qmRzzJ1PKTpyrpnT7mwdneKNJB9hUtypZDMggloDfFUCIqRRx3lYRxteCwXSq9c+W71Vf0QnQ==
"@types/stack-utils@^2.0.0":
version "2.0.1"
resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c"
@@ -13840,11 +13835,6 @@ sourcemap-codec@^1.4.8:
resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
spark-md5@^3.0.1:
version "3.0.2"
resolved "https://registry.yarnpkg.com/spark-md5/-/spark-md5-3.0.2.tgz#7952c4a30784347abcee73268e473b9c0167e3fc"
integrity sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw==
spawn-command@^0.0.2-1:
version "0.0.2-1"
resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0"