56 lines
1.8 KiB
JavaScript
56 lines
1.8 KiB
JavaScript
const sm2 = require('sm-crypto').sm2;
|
||
const sm3 = require('sm-crypto').sm3;
|
||
|
||
console.log('=== 调试 sm-crypto 0.3.13 API ===');
|
||
|
||
// 测试基本功能
|
||
const testData = 'test';
|
||
const hash = sm3(testData);
|
||
console.log('测试数据:', testData);
|
||
console.log('SM3 哈希:', hash);
|
||
|
||
// 生成密钥对
|
||
const keypair = sm2.generateKeyPairHex();
|
||
console.log('\n生成的密钥对:');
|
||
console.log(' 私钥:', keypair.privateKey);
|
||
console.log(' 公钥:', keypair.publicKey);
|
||
|
||
// 签名
|
||
const sig = sm2.doSignature(testData, keypair.privateKey);
|
||
console.log('\n签名:', sig);
|
||
console.log('签名长度:', sig.length);
|
||
|
||
// 验证签名
|
||
const verifyResult = sm2.doVerifySignature(testData, sig, keypair.publicKey);
|
||
console.log('验证结果:', verifyResult);
|
||
|
||
// 测试用户提供的数据
|
||
console.log('\n=== 测试用户数据 ===');
|
||
|
||
const data = 'QDJNHHVB_FWQ';
|
||
const signature = '02D3816303EE2A352477F3227070CC34297BD6E89DC86E2C54840FFFC92C3B6766114B6BFA CB00408CC51B8C18D02023F50671844372094D9460BD5F85ACAC50'.replace(/\s/g, '');
|
||
const publicKey = '04bb7754e559f6d158d52fdc4608244f07f12901363a1d6db8fb3219bf8e827efd11d8f18cf9926cfdd61aaf0eea2429e921b7b94f43ca9b2c89213355ad59e731';
|
||
|
||
console.log('数据:', data);
|
||
console.log('签名:', signature);
|
||
console.log('公钥:', publicKey);
|
||
|
||
// 尝试验证
|
||
console.log('\n尝试验证:');
|
||
try {
|
||
// 注意:sm-crypto 0.3.13 的 API 可能不同
|
||
// 尝试不带选项
|
||
const result1 = sm2.doVerifySignature(data, signature, publicKey);
|
||
console.log(' 验证结果 (无选项):', result1);
|
||
} catch (e) {
|
||
console.error(' 错误 (无选项):', e.message);
|
||
}
|
||
|
||
try {
|
||
// 尝试带哈希选项
|
||
const result2 = sm2.doVerifySignature(hash, signature, publicKey, true); // 第二个参数是 hash 选项
|
||
console.log(' 验证结果 (hash=true):', result2);
|
||
} catch (e) {
|
||
console.error(' 错误 (hash=true):', e.message);
|
||
}
|