智能客服
你问我答,随时在线为你解决问题

























调用cryptoFramework.createMd方法,传入SM3,可参考如下代码:
import { cryptoFramework } from '@kit.CryptoArchitectureKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { util, buffer } from '@kit.ArkTS';
let base64 = new util.Base64Helper();
@Entry
@Component
struct SM3Encrypted {
stringToUint8Array(str: string) {
return new Uint8Array(buffer.from(str, 'utf-8').buffer);
}
// 以Promise方式完成摘要
doMdByPromise() {
// 摘要算法名称。
let mdAlgName = 'SM3';
// 要进行摘要的数据。
let message = 'Hello,world';
let md = cryptoFramework.createMd(mdAlgName);
console.info('[Promise]: Md algName is: ' + md.algName);
let promiseMdUpdate = md.update({ data: this.stringToUint8Array(message) });
promiseMdUpdate.then(() => {
// 调用 digest() 以返回结果。
let PromiseMdDigest = md.digest();
return PromiseMdDigest;
}).then(digestOutput => {
let mdOutput = digestOutput.data;
//Uint8Array转base64
let str2 = base64.encodeToStringSync(mdOutput);
//转16进制
let str = this.uint8ArrayToHexStr(mdOutput);
console.info('[Promise]: MD result: ' + mdOutput);
let mdLen = md.getMdLength();
console.info('[Promise]: MD len: ' + mdLen);
}).catch((error: BusinessError) => {
console.error('[Promise]: error: ' + error.message);
});
}
//摘要结果是Uint8Array类型,转换得到十六进制字符串数据
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;
}
build() {
Column({ space: 10 }) {
Button('使用SM3加密')
.onClick(() => {
this.doMdByPromise();
})
}
.alignItems(HorizontalAlign.Center)
.height('100%')
.width('100%')
}
} 智能客服
你问我答,随时在线为你解决问题
合作咨询
我们的专家服务团队将竭诚为您提供专业的合作咨询服务
解决方案
精准高效的一站式服务支持,助力开发者商业成功