使用系统创建的 SM2 私钥和公钥长度和其他平台生成的不一致。
需要生成公钥提供给其他平台如Java用于验签,私钥用于签名。同时也要用私钥来进行解密。
export function generateSM2Key(): Record<string, string | undefined> {
// 创建一个AsyKeyGenerator实例
let sm2Generator = cryptoFramework.createAsyKeyGenerator('SM2_256');
// 使用密钥生成器随机生成非对称密钥对
let keyPair = sm2Generator.generateKeyPairSync();
let pubKey = keyPair.pubKey;
let priKey = keyPair.priKey;
// 获取非对称密钥对的二进制数据
let pkBlob = pubKey.getEncoded();
let skBlob = priKey.getEncoded();
console.info('pk bin data' + pkBlob.data);
console.info('sk bin data' + skBlob.data);
let pubKeyBase64 = base64.encodeToStringSync(pkBlob.data);
let priKeyBase64 = base64.encodeToStringSync(skBlob.data);
let result: Record<string, string> = {};
result["pubkey"] = pubKeyBase64;
result["privatekey"] = priKeyBase64;
return result;
}
使用下面代码即可: