HarmonyOS 鸿蒙Next RSA签名demo(SHA1withRSA算法)

发布于 1周前 作者 yibo5220 来自 鸿蒙OS

HarmonyOS 鸿蒙Next RSA签名demo(SHA1withRSA算法) 有这样的demo嘛

使用base64格式的私钥(string类型)对内容进行SHA1withRSA算法签名,得到string类型的签名结果。
使用base64格式的共钥(string类型)对签名后的数据进行SHA1withRSA算法验签,得到boolean类型的验签结果。

2 回复
export async function signMessagePromise(content: cryptoFramework.DataBlob, priKey: cryptoFramework.PriKey) {
  let signAlg = "RSA1024|PKCS1|SHA1"; // 签名算法规格
  let signer = cryptoFramework.createSign(signAlg);
  await signer.init(priKey);
  let signData = await signer.sign(content);
  return signData;
}

export async function verifyMessagePromise(content: cryptoFramework.DataBlob, signMessageBlob: cryptoFramework.DataBlob, pubKey: cryptoFramework.PubKey) {
  let verifyAlg = "RSA1024|PKCS1|SHA1"; // 签名算法规格
  let verifier = cryptoFramework.createVerify(verifyAlg);
  await verifier.init(pubKey);
  let res = await verifier.verify(content, signMessageBlob);
  console.info("verify result is " + res);
  return res;
}

export async function convertAsyKey() {
  let rsaGenerator = cryptoFramework.createAsyKeyGenerator('RSA1024');
  // 随机生成的公私钥对,Base64格式
  let pubKeyVal = "xxxxxxx";
  let priKeyVal = "xxxxxx";

  let pkBlob: cryptoFramework.DataBlob = { data: stringToUnit8Array(pubKeyVal) };
  let prBlob: cryptoFramework.DataBlob = { data: stringToUnit8Array(priKeyVal) };

  rsaGenerator.convertKey(pkBlob, prBlob, async (err, keyPair) => {
    if (err) {
      console.error(`convertKey failed, ${err.code}, ${err.message}`);
      return;
    }
    console.info('convertKey success!');

    let plainText: string = "test";
    let res = await signMessagePromise({
      data: new Uint8Array(buffer.from(plainText, 'utf-8').buffer)
    }, keyPair.priKey)

    console.log("convertKey sign result:" + new util.Base64Helper().encodeToStringSync(res.data))

    let verifyResult = await verifyMessagePromise({
      data: new Uint8Array(buffer.from(plainText, 'utf-8').buffer)
    }, res, keyPair.pubKey);

    if (verifyResult == true) {
      console.info('convertKey verify success');
    } else {
      console.error('convertKey verify failed');
    }
  });
}

export function stringToUnit8Array(str: string): Uint8Array {
  return new util.Base64Helper().decodeSync(str)
}

更多关于HarmonyOS 鸿蒙Next RSA签名demo(SHA1withRSA算法)的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对帖子标题“HarmonyOS 鸿蒙Next RSA签名demo(SHA1withRSA算法)”的问题,以下是一个简洁的回答:

在HarmonyOS中实现SHA1withRSA算法的RSA签名demo,你主要需要利用鸿蒙系统提供的加密库。以下是一个简要的步骤概述:

  1. 引入必要的库:确保你的项目中已经包含了鸿蒙系统加密相关的库。这些库通常提供了RSA签名和验证的功能。

  2. 生成RSA密钥对:使用鸿蒙提供的API生成RSA公钥和私钥。这是签名和验证的基础。

  3. 数据预处理:将要签名的数据进行预处理,通常包括数据的哈希处理。在这个例子中,你需要使用SHA1算法对数据进行哈希。

  4. 执行签名:使用生成的私钥和预处理后的数据(哈希值),通过鸿蒙的加密API执行RSA签名操作。

  5. 验证签名:在需要验证签名的地方,使用公钥、原始数据的哈希值和签名值,通过鸿蒙的加密API进行验证。

请注意,SHA1算法由于安全性问题,在许多场景下已经被更安全的算法(如SHA256)所替代。因此,在实际应用中,建议考虑使用更安全的哈希算法。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部