44 lines
1.4 KiB
JavaScript
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);
|
|
}
|