Hmac采用SM3摘要算法传入自定义生成的key

Hmac采用SM3摘要算法传入自定义生成的key

HarmonyOS
2024-05-21 20:43:36
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
janux

本文主要介绍使用Hmac采用SM3摘要算法传入自定义生成的key,获取结果。

场景

可以传入自定义长度的key去获取mac结果。

使用的核心API

HMAC算法规格

开发步骤

核心代码解释

1.设置算法,通过接口createMac生成消息认证码操作实例。

2.接受输入对称密钥,通过接口init,初始化Mac。

3.接受数据,通过接口update,更新Mac,此步骤可重复。

4.通过接口doFinal,返回Mac计算结果。

5.将结果转换成十六进制。

核心代码如下:

import cryptoFramework from '@ohos.security.cryptoFramework'; 
import buffer from '@ohos.buffer'; 
  
  
@Entry 
@Component 
struct Hmac { 
  @State message: string = 'Hello World'; 
  
  
  build() { 
    Row() { 
      Column() { 
        Text("HELLO") 
          .fontSize(50) 
          .fontWeight(FontWeight.Bold) 
          .onClick(() => { 
            getHmac("zhpt_inner_test230300json88dd5e57e5eb1f962c3ae950492ebc21093da472844d18d4343accd2ecbdd258d6748f0eedb1b4349d9c4e65d6e778d26985c8c52ab688e39615f4eb4b48693327fd1bf076ba697598013e71cf50aee8b64f736f7c5fe771ce0ad9bde8e80e623ef17dc0db0d626c2a24ad70955a911a80b0efb4760b8a7b14fd5283b5896f1350e9fd6ef2aa29d11c5d779e364f9938939768fc981040155cc853886e0915243a6636d2b711159680a287cb815d4bf670b7ef8c64f5f3c0e78445ed17dfc7092b550222b72f49e834a7974e3918d14048f7c89c2cf42387ba226018bcc2547e7800107dbe540bea84d68602d53774f0d3f356b19e04267d146bb5151fdac678f136a3df9ce87c4f35b50658f58171395017f49f6d56b5af91b9be90d7e290c0558bd912b2be5688c4b7e41264a92e8017029533150963.2") 
          }) 
      } 
      .width('100%') 
    } 
    .height('100%') 
  } 
} 
  
// 可理解的字符串转成字节流 
function stringToUint8Array(str: string) { 
  let arr = new Uint8Array(str.length); 
  for (let i = 0, j = str.length; i < j; ++i) { 
    arr[i] = str.charCodeAt(i); 
  } 
  return arr; 
} 
  
async function getHmac(message:string){ 
  
  try { 
    let macAlgName = "SM3"; 
    let mac =cryptoFramework.createMac(macAlgName) 
    let arr = stringToUint8Array("30a86dc9056c44cc05420fec269270214bbb6914954e871e83771c9810ac1db0") 
    let KeyBlob: cryptoFramework.DataBlob = {data:arr}; 
    let symKeyGenerator = cryptoFramework.createSymKeyGenerator("HMAC"); 
    const  symKey=await symKeyGenerator.convertKey(KeyBlob); 
    await mac.init(symKey) 
    await mac.update({data:stringToUint8Array(message)}); 
    let macOutpt= await mac.doFinal(); 
    const res=buffer.from(macOutpt.data).toString('hex'); 
    console.log("Hmac---:"+res); 
  }catch (err){ 
    console.log("err:"+err) 
  } 
  
}

实现效果

适配的版本信息

IDE:DevEco    Studio 4.1.1.300

SDK:HarmoneyOS    4.0.10.15

分享
微博
QQ
微信
回复
2024-05-22 16:46:26
相关问题
SM3摘要算法对明文进行编码转换
358浏览 • 1回复 待解决
能否提供一个SM3加密案例
235浏览 • 1回复 待解决
能否提供一个关于SM3加密demo?
236浏览 • 1回复 待解决
自定义弹窗自定义转场动画
394浏览 • 1回复 待解决
hvigor自定义扩展demo
314浏览 • 1回复 待解决
自定义装饰器使用问题
221浏览 • 0回复 待解决
SM4采用OFB模式进行加解密
312浏览 • 1回复 待解决
如何自定义组件原型菜单
404浏览 • 1回复 待解决
自定义组件嵌套子组件
7854浏览 • 3回复 待解决
自定义弹窗使用相关问题
369浏览 • 1回复 待解决