From 9be06035f41a439164fd5b2a91ed639b642fdb65 Mon Sep 17 00:00:00 2001 From: cheney Date: Wed, 15 Apr 2026 19:14:08 +0800 Subject: [PATCH] =?UTF-8?q?sm3=20=E5=8A=9F=E8=83=BD=E6=A0=B8=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 16 ++++++ package.json | 1 + src/App.tsx | 10 ++-- src/__tests__/algorithm/sm3.test.ts | 43 ++++++++++++++- src/utils/algorithm/sm3.ts | 86 ++++++++++++++++++++++++----- 5 files changed, 137 insertions(+), 19 deletions(-) diff --git a/package-lock.json b/package-lock.json index cd5a3a0..fb8195c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "0.0.0", "dependencies": { "gm-crypto": "*", + "gmsm-sm3js": "^0.2.0", "gmsm-sm4js": "^0.7.0", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -4281,6 +4282,15 @@ "to-arraybuffer": "^1.0.1" } }, + "node_modules/gmsm-sm3js": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/gmsm-sm3js/-/gmsm-sm3js-0.2.0.tgz", + "integrity": "sha512-z4SZH+xoQtYSIp22qwwZ0Z45Fajaxav+Y2OGlEoAVm2tK+o0fOQHowPeh91FpCCH/+p0jNiKL2G9C4T9EEQJWA==", + "license": "Apache-2.0", + "dependencies": { + "long": "^5.2.3" + } + }, "node_modules/gmsm-sm4js": { "version": "0.7.0", "resolved": "https://registry.npmmirror.com/gmsm-sm4js/-/gmsm-sm4js-0.7.0.tgz", @@ -5467,6 +5477,12 @@ "dev": true, "license": "MIT" }, + "node_modules/long": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/long/-/long-5.3.2.tgz", + "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", + "license": "Apache-2.0" + }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz", diff --git a/package.json b/package.json index f037fbe..dafca55 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ }, "dependencies": { "gm-crypto": "*", + "gmsm-sm3js": "^0.2.0", "gmsm-sm4js": "^0.7.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/src/App.tsx b/src/App.tsx index 011ee7e..577baa0 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,6 +1,6 @@ import { useState } from 'react' import { generateSm2KeyPair, sm2Encrypt, sm2Decrypt } from './utils/algorithm/sm2' -import { sm3Digest } from './utils/algorithm/sm3' +import { sm3Digest, sm3Hmac } from './utils/algorithm/sm3' import { sm4Encrypt, sm4Decrypt } from './utils/algorithm/sm4' import { hexToUtf8, utf8ToHex } from './utils/convert' @@ -19,6 +19,7 @@ function App() { const [sm3Message, setSm3Message] = useState('') const [sm3Result, setSm3Result] = useState('') const [sm3MacKey, setSm3MacKey] = useState('') + const [sm3MacResult, setSm3MacResult] = useState('') // SM4 状态 const [sm4Key, setSm4Key] = useState('') @@ -107,10 +108,10 @@ function App() { // SM3 MAC 计算 const calculateSm3Mac = () => { try { - // 简化处理,实际项目中可能需要使用正确的 API - alert('MAC 计算功能需要正确的 API 支持') + const result = sm3Hmac(sm3MacKey, sm3Message) + setSm3MacResult(result) } catch (error) { - alert('MAC 计算失败: ' + error) + alert('MAC 计算失败: ' + (error instanceof Error ? error.message : error)) } } @@ -299,6 +300,7 @@ function App() {