kit.program/kit/test/debug_sm2_public_key_fix.js
2026-04-04 18:06:09 +08:00

44 lines
1.4 KiB
JavaScript

const sm2 = require('sm-crypto').sm2;
console.log('=== 测试公钥格式 ===');
// 测试数据
const data = 'QDJNHHVB_FWQ';
const signature = '02D3816303EE2A352477F3227070CC34297BD6E89DC86E2C54840FFFC92C3B6766114B6BFACB00408CC51B8C18D02023F50671844372094D9460BD5F85ACAC50';
// 完整公钥(带 04 前缀)
const fullPublicKey = '04bb7754e559f6d158d52fdc4608244f07f12901363a1d6db8fb3219bf8e827efd11d8f18cf9926cfdd61aaf0eea2429e921b7b94f43ca9b2c89213355ad59e731';
// 去掉 04 前缀的公钥
const publicKeyWithoutPrefix = fullPublicKey.substring(2);
console.log('完整公钥:', fullPublicKey);
console.log('去掉前缀的公钥:', publicKeyWithoutPrefix);
// 测试完整公钥
console.log('\n使用完整公钥:');
try {
const result1 = sm2.doVerifySignature(data, signature, fullPublicKey);
console.log(' 验证结果:', result1);
} catch (e) {
console.error(' 错误:', e.message);
}
// 测试去掉前缀的公钥
console.log('\n使用去掉前缀的公钥:');
try {
const result2 = sm2.doVerifySignature(data, signature, publicKeyWithoutPrefix);
console.log(' 验证结果:', result2);
} catch (e) {
console.error(' 错误:', e.message);
}
// 测试带哈希选项
console.log('\n使用去掉前缀的公钥 + 哈希:');
try {
const result3 = sm2.doVerifySignature(data, signature, publicKeyWithoutPrefix, true);
console.log(' 验证结果:', result3);
} catch (e) {
console.error(' 错误:', e.message);
}