HarmonyOS SM2依据已有的字符串的私钥和公钥进行签名和验签

当前为生成SM2公私钥并进行签名验签过程,是否有根据已有的SM2公私钥进行签名和验签的方法?以及该SM2是否为标准的SM2,类似BC库的?

HarmonyOS
2024-08-13 15:10:16
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Heiang

根据已有的SM2公私钥进行签名和验签的方法是支持的,其中加密代码使用如下:

function encryptMessagePromise(publicKey:Uint8Array|string) { 
  let publickKeyData = new Uint8Array(); 
  if(typeof publicKey === ‘string’){ 
    publickKeyData = stringToUint8Array(publicKey) 
  }else{ 
    publickKeyData = publicKey; 
  } 
  // 创建 AsyKeyGenerator 实例。 
  let sm2Generator = cryptoFramework.createAsyKeyGenerator(“SM2_256”); 
  // 创建 Cipher 实例。 
  let cipher = cryptoFramework.createCipher(“SM2_256|SM3”); 
  // 使用 convertKey导入公钥或私钥获取密钥对。 
  const publicKeyDataBlob:cryptoFramework.DataBlob = { data: publickKeyData }; 
  sm2Generator.convertKey(publicKeyDataBlob,null).then((sm2KeyPair: cryptoFramework.KeyPair): Promise<void> => { 
    let pubKey = sm2KeyPair.pubKey; 
    // 初始化 Cipher 实例并使用公钥对消息进行加密。 
    return cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, pubKey, null); 
  }).then(() => { 
    // 加密 
    let input: cryptoFramework.DataBlob = { data: stringToUint8Array(plan) }; 
    return cipher.doFinal(input); 
  }).then(dataBlob => { 
    // 获取加密数据。 
    console.info("EncryptOutPut is " + dataBlob.data); 
  }); 
}

当调用convertKey方法将外来二进制数据转换为算法库非对称密钥对象时,公钥应满足ASN.1语法、X.509规范、DER编码格式,私钥应满足ASN.1语法、PKCS#8规范、DER编码格式。convertKey方法中,公钥和密钥二进制数据非必选项,可单独传入公钥或私钥的数据,生成对应只包含公钥或私钥的KeyPair对象。

分享
微博
QQ
微信
回复
2024-08-13 21:03:41
相关问题
huks sm2签名失败
20浏览 • 1回复 待解决
HarmonyOS SM2SM3摘要算法使用
221浏览 • 1回复 待解决
HarmonyOS Sm2DES加解密问题
264浏览 • 1回复 待解决
RSA签名后,后端失败
18浏览 • 1回复 待解决
关于字符串分割重组处理
4073浏览 • 1回复 待解决
如何打印JSON对象JSON字符串
210浏览 • 1回复 待解决
emoji字符串无法进行截取
745浏览 • 1回复 待解决
如何使用国密SM2算法进行加解密
3053浏览 • 1回复 待解决
HarmonyOS SM2密钥对转换失败
387浏览 • 1回复 待解决
判断字符串是否为空空白符
877浏览 • 1回复 待解决
检查字符串是否以给定字符串开头
354浏览 • 1回复 待解决