From fe1f7c14b4f8506c746714aa330af90b8ca86029 Mon Sep 17 00:00:00 2001 From: cheney Date: Wed, 15 Apr 2026 17:34:25 +0800 Subject: [PATCH] =?UTF-8?q?web=20=E7=AB=AF=20sm4=20=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E6=AD=A3=E7=A1=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.tsx | 20 ++++++++++++++++++-- src/__tests__/algorithm/sm4-gcm.test.ts | 22 ++++++++++++++++++++++ src/__tests__/algorithm/sm4.test.ts | 1 + src/utils/algorithm/sm4.ts | 12 +++++++----- test-gcm.js | 21 +++++++++++++++++++++ 5 files changed, 69 insertions(+), 7 deletions(-) create mode 100644 src/__tests__/algorithm/sm4-gcm.test.ts create mode 100644 test-gcm.js diff --git a/src/App.tsx b/src/App.tsx index 2542046..011ee7e 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -25,6 +25,7 @@ function App() { const [sm4Iv, setSm4Iv] = useState('') const [sm4Message, setSm4Message] = useState('') const [sm4Mode, setSm4Mode] = useState('ecb') + const [sm4PaddingMode, setSm4PaddingMode] = useState<'pkcs7' | 'none'>('pkcs7') const [sm4Encrypted, setSm4Encrypted] = useState('') const [sm4Decrypted, setSm4Decrypted] = useState('') @@ -116,7 +117,7 @@ function App() { // SM4 加密 const handleEncryptSm4 = () => { try { - const encrypted = sm4Encrypt(sm4Message, sm4Key, sm4Mode, sm4Iv) + const encrypted = sm4Encrypt(sm4Message, sm4Key, sm4Mode, sm4Iv, sm4PaddingMode) setSm4Encrypted(encrypted) } catch (error) { alert('加密失败: ' + (error instanceof Error ? error.message : error)) @@ -126,7 +127,7 @@ function App() { // SM4 解密 const handleDecryptSm4 = () => { try { - const decrypted = sm4Decrypt(sm4Encrypted, sm4Key, sm4Mode, sm4Iv) + const decrypted = sm4Decrypt(sm4Encrypted, sm4Key, sm4Mode, sm4Iv, sm4PaddingMode) setSm4Decrypted(decrypted) } catch (error) { alert('解密失败: ' + (error instanceof Error ? error.message : error)) @@ -347,6 +348,21 @@ function App() { +
+ +
+ {(['pkcs7', 'none'] as const).map(paddingMode => ( + + ))} +
+
+