const sm2 = require('sm-crypto').sm2; console.log('=== 调试 SM2 DER 格式 ==='); // 测试数据 const data = 'QDJNHHVB_FWQ'; const userId = '1234567812345678'; // 生成密钥对 const keypair = sm2.generateKeyPairHex(); console.log('公钥:', keypair.publicKey); // 生成签名(带 der 选项) const sigWithDer = sm2.doSignature(data, keypair.privateKey, { der: true }); console.log('\n带 DER 的签名:', sigWithDer); console.log('带 DER 的签名长度:', sigWithDer.length); // 生成签名(不带 der 选项) const sigWithoutDer = sm2.doSignature(data, keypair.privateKey); console.log('\n不带 DER 的签名:', sigWithoutDer); console.log('不带 DER 的签名长度:', sigWithoutDer.length); // 验证带 DER 的签名 const verifyWithDer = sm2.doVerifySignature(data, sigWithDer, keypair.publicKey, { der: true }); console.log('\n验证带 DER 的签名:', verifyWithDer); // 验证不带 DER 的签名 const verifyWithoutDer = sm2.doVerifySignature(data, sigWithoutDer, keypair.publicKey); console.log('验证不带 DER 的签名:', verifyWithoutDer);