HarmonyOS SM3加密怎么写的呢?

HarmonyOS
2天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
FengTianYa
import cryptoFramework from '@ohos.security.cryptoFramework';
import { BusinessError } from '@ohos.base';
import util from '@ohos.util';
import buffer from '@ohos.buffer';

function stringToUint8Array(str: string) {
  return new Uint8Array(buffer.from(str, 'utf-8').buffer);
}

function hexStrTouint8Array(data: string): Uint8Array {
  return new Uint8Array(buffer.from(data, 'hex').buffer);
  ;
}

let base64 = new util.Base64Helper(); // 以Promise方式完成摘要

function doMdByPromise() {
  // 摘要算法名称。
  let mdAlgName = "SM3";
  // 要进行摘要的数据。
  let message =
    "c5083fb7bac6a209947c09c04bdff3a3dbd68d9bf2bf3e788ef085cf752525d9e2f145f875f687d88d189c0f6ed4739cf81fafa689c7e7153a000376741a25f18992b6ff6b8e2d10";
  let md = cryptoFramework.createMd(mdAlgName);
  console.info("[Promise]: Md algName is: " + md.algName);
  let promiseMdUpdate = md.update({ data: hexStrTouint8Array(message) });
  promiseMdUpdate.then(() => {
    // 调用 digest() 以返回结果。
    let PromiseMdDigest = md.digest();
    return PromiseMdDigest;
  }).then(digestOutput => {
    let mdOutput = digestOutput.data;
    let str2 = base64.encodeToStringSync(mdOutput);
    let str = uint8ArrayToHexStr(mdOutput)
    console.info("[Promise]: MD result: " + str);
    let mdLen = md.getMdLength();
    console.info("[Promise]: MD len: " + mdLen);
  }).catch((error: BusinessError) => {
    console.error("[Promise]: error: " + error.message);
  });
}

function uint8ArrayToHexStr(data: Uint8Array): string {
  let hexString = "";
  let i: number;
  for (i = 0; i < data.length; i++) {
    let char = ('00' + data[i].toString(16)).slice(-2);
    hexString += char;
  }
  return hexString;
}

@Entry
@Component
struct Page240603210944057 {
  @State message: string = 'Hello World';

  build() {
    Row() {
      Column() {
        Button('do sm3').onClick(() => {
          doMdByPromise();
        })
      }
      .width('100%')
    }
    .height('100%')
  }
}
分享
微博
QQ
微信
回复
2天前
相关问题
HarmonyOS 如何使用SM3加密
409浏览 • 1回复 待解决
能否提供一个SM3加密案例
611浏览 • 1回复 待解决
能否提供一个关于SM3加密demo?
685浏览 • 1回复 待解决
HarmonyOS SM2加签验签SM3摘要算法使用
490浏览 • 1回复 待解决
SM3摘要算法对明文进行编码转换
1096浏览 • 1回复 待解决
HarmonyOS SM4-ECB-NoPadding加密
41浏览 • 1回复 待解决
HarmonyOS文件上传怎么
549浏览 • 1回复 待解决
鸿蒙promise要怎么
7445浏览 • 3回复 待解决
这个swipe事件怎么啊?
9837浏览 • 2回复 待解决
救命,鸿蒙怎么动画啊
5751浏览 • 2回复 待解决
怎么单元测试用例?
2120浏览 • 1回复 待解决