HarmonyOS 鸿蒙Next中如何同步md5加密,提供一个案例
HarmonyOS 鸿蒙Next中如何同步md5加密,提供一个案例
鸿蒙中如何同步md5加密,提供一个案例
2 回复
"可使用ohpm的三方库""[@ohos](/user/ohos)/crypto-js""进行加密操作,具体可参考:https://ohpm.openharmony.cn/#/cn/detail/[@ohos](/user/ohos)%2Fcrypto-js
MD5加密可参考以下代码来写:
let base64 = new util.Base64Helper();
export function DoMdByPromise() {
// 摘要算法名称。
let mdAlgName = ""MD5"";
// 要进行摘要的数据。
let message = ""Hello, 中国"";
let md = cryptoFramework.createMd(mdAlgName);
;
// 如果数据量较小,可以使用 update() 一次传入所有数据。输入参数的长度没有限制。
let promiseMdUpdate = md.update({ data: stringToUint8Array(message) });
promiseMdUpdate.then(() => {
let PromiseMdDigest = md.digest();
return PromiseMdDigest;
}).then(digestOutput => {
let mdOutput = digestOutput.data;
let str2 = uint8ArrayToHexStr(mdOutput);
let str = base64.encodeToStringSync(mdOutput);
let str1 = uint8ArrayToString(mdOutput);
let mdLen = md.getMdLength();
}).catch((error: BusinessError) => {
console.error(""[Promise]: error: "" + error.message);
});
}
//摘要结果是Uint8Array类型,转换得到十六进制字符串数据
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;
}
// 字节流转成可理解的字符串
function uint8ArrayToString(array: Uint8Array) {
// 将UTF-8编码转换成Unicode编码
let out: string = """";
let index: number = 0;
let len: number = array.length;
while (index < len) {
let character = array[index++];
switch (character >> 4) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
out += String.fromCharCode(character);
break;
case 12:
case 13:
out += String.fromCharCode(((character & 0x1F) << 6) | (array[index++] & 0x3F));
break;
case 14:
out += String.fromCharCode(((character & 0x0F) << 12) | ((array[index++] & 0x3F) << 6) | ((array[index++] & 0x3F) << 0));
break;
default:
break;
}
}
return out;
}
function stringToUint8Array(str: string) {
return new Uint8Array(buffer.from(str, 'utf-8').buffer)
} "
在HarmonyOS鸿蒙Next中实现MD5加密的同步操作,可以通过以下案例进行说明:
HarmonyOS的MD5加密API通常设计为异步方法,但出于某些场景的需要,可通过编写封装函数将其转换为同步执行。然而,直接调用同步MD5加密API的情况较为少见,更多时候开发者会选择使用第三方库来实现同步加密。
例如,可以使用crypto-js
库。首先,在项目的oh-package.json5
文件中添加对crypto-js
库的依赖,指定版本为^2.0.4-rc.1
。然后,在代码中导入crypto-js
库,并使用其提供的MD5加密方法。以下是一个简单的示例:
import { CryptoJS } from '@ohos/crypto-js';
@Entry
@Component
struct Page {
build() {
Column() {
Button('获取MD5').onClick(() => {
let abc = CryptoJS.MD5("123456").toString();
console.info(`abc: ${abc}`);
})
}.height('100%').width('100%')
}
}
上述代码在点击按钮时,会计算字符串"123456"的MD5值,并打印到控制台。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。