const sm2 = require('sm-crypto').sm2; const sm3 = require('sm-crypto').sm3; console.log('=== 检查 sm-crypto 版本 ==='); console.log('sm-crypto 版本:', require('sm-crypto/package.json').version); // 测试公钥格式 console.log('\n=== 测试公钥格式 ==='); // 生成一个有效的 SM2 密钥对 const keypair = sm2.generateKeyPairHex(); console.log('生成的公钥:', keypair.publicKey); console.log('生成的公钥长度:', keypair.publicKey.length); // 用户提供的公钥 const userPublicKey = 'bb7754e559f6d158d52fdc4608244f07f12901363a1d6db8fb3219bf8e827efd11d8f18cf9926cfdd61aaf0eea2429e921b7b94f43ca9b2c89213355ad59e731'; console.log('\n用户提供的公钥:', userPublicKey); console.log('用户提供的公钥长度:', userPublicKey.length); // 测试用户公钥 console.log('\n=== 测试用户公钥 ==='); try { const data = 'test'; const sig = sm2.doSignature(data, keypair.privateKey); // 尝试使用生成的公钥验证(应该成功) const verify1 = sm2.doVerifySignature(data, sig, keypair.publicKey); console.log('使用生成的公钥验证:', verify1); // 尝试使用用户公钥验证(应该失败) const verify2 = sm2.doVerifySignature(data, sig, userPublicKey); console.log('使用用户公钥验证:', verify2); } catch (e) { console.error('错误:', e.message); }