HarmonyOS SM2加签返回Base64字符串

HarmonyOS
2024-12-20 13:22:55
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
aquaa

只需传入在加密解密生成的私钥进行加签,然后加签后的数据base64转码传出到服务器进行验签即可

import cryptoFramework from '@ohos.security.cryptoFramework';
import buffer from '@ohos.buffer';

// 完整的明文被拆分为input1和input2
let input1: cryptoFramework.DataBlob = { data: new Uint8Array(buffer.from("This is Sign test plan1", 'utf-8').buffer) };
let input2: cryptoFramework.DataBlob = { data: new Uint8Array(buffer.from("This is Sign test plan2", 'utf-8').buffer) };

async function signMessagePromise(priKey: cryptoFramework.PriKey) {
  let signAlg = "SM2_256|SM3";
  let signer = cryptoFramework.createSign(signAlg);
  await signer.init(priKey);
  await signer.update(input1); // 如果明文较短,可以直接调用sign接口一次性传入
  let signData = await signer.sign(input2);
  return signData;
}

async function verifyMessagePromise(signMessageBlob: cryptoFramework.DataBlob, pubKey: cryptoFramework.PubKey) {
  let verifyAlg = "SM2_256|SM3";
  let verifier = cryptoFramework.createVerify(verifyAlg);
  await verifier.init(pubKey);
  await verifier.update(input1); // 如果明文较短,可以直接调用verify接口一次性传入
  let res = await verifier.verify(input2, signMessageBlob);
  console.info("verify result is " + res);
  return res;
}

async function main() {
  let keyGenAlg = "SM2_256";
  let generator = cryptoFramework.createAsyKeyGenerator(keyGenAlg);
  let keyPair = await generator.generateKeyPair();
  let signData = await signMessagePromise(keyPair.priKey);
  let verifyResult = await verifyMessagePromise(signData, keyPair.pubKey);
  if (verifyResult == true) {
    console.info('verify success');
  } else {
    console.error('verify failed');
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.

sm2验签api详情指南参考: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/crypto-sm2-sign-sig-verify-pkcs1-V5

分享
微博
QQ
微信
回复
2024-12-20 15:34:03
相关问题
HarmonyOS 图片转为base64字符
887浏览 • 1回复 待解决
base64字符如何转为图片并保存
3663浏览 • 1回复 待解决
PixelMap类型怎么转换成Base64字符
1599浏览 • 1回复 待解决
如何将PixelMap转图片base64字符
1559浏览 • 1回复 待解决
如何将图片base64字符转PixelMap?
1626浏览 • 1回复 待解决
base64字符保存为图片的方法
2081浏览 • 1回复 待解决
HarmonyOS SM2SM3摘要算法使用
1367浏览 • 1回复 待解决
HarmonyOS sm2失败
919浏览 • 1回复 待解决