harmony-utils之MD5,MD5工具類(lèi)
harmony-utils 簡(jiǎn)介與說(shuō)明
[harmony-utils] 一款功能豐富且極易上手的HarmonyOS工具庫(kù),借助眾多實(shí)用工具類(lèi),致力于助力開(kāi)發(fā)者迅速構(gòu)建鴻蒙應(yīng)用。其封裝的工具涵蓋了APP、設(shè)備、屏幕、授權(quán)、通知、線程間通信、彈框、吐司、生物認(rèn)證、用戶(hù)首選項(xiàng)、拍照、相冊(cè)、掃碼、文件、日志,異常捕獲、字符、字符串、數(shù)字、集合、日期、隨機(jī)、base64、加密、解密、JSON等一系列的功能和操作,能夠滿足各種不同的開(kāi)發(fā)需求。
[picker_utils] 是harmony-utils拆分出來(lái)的一個(gè)子庫(kù),包含PickerUtil、PhotoHelper、ScanUtil。
下載安裝ohpm i @pura/harmony-utils
ohpm i @pura/picker_utils
//全局初始化方法,在UIAbility的onCreate方法中初始化 AppUtil.init()
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
AppUtil.init(this.context);
}
MD5 算法簡(jiǎn)介
MD5(Message-Digest Algorithm 5)是由Ronald Rivest于1991年設(shè)計(jì)的密碼散列函數(shù),可將任意長(zhǎng)度數(shù)據(jù)生成128位(16字節(jié))的固定長(zhǎng)度哈希值。其核心通過(guò)?填充-分塊-循環(huán)壓縮?流程實(shí)現(xiàn):先對(duì)輸入補(bǔ)位至512位倍數(shù),再分塊進(jìn)行4輪非線性運(yùn)算(每輪16次操作),最終輸出唯一性摘要。
該算法曾廣泛用于文件完整性校驗(yàn)(如軟件包校驗(yàn))、密碼存儲(chǔ)及數(shù)字證書(shū)簽名。但因存在碰撞漏洞(可人為構(gòu)造相同哈希的不同數(shù)據(jù)),自2004年被證實(shí)不抗碰撞攻擊后,逐步被SHA-256等更安全算法替代。目前仍見(jiàn)于非敏感場(chǎng)景如緩存標(biāo)識(shí)或數(shù)據(jù)去重。因MD5存在碰撞攻擊風(fēng)險(xiǎn)(王小云團(tuán)隊(duì)2004年破解),金融、政務(wù)等關(guān)鍵領(lǐng)域已禁用,推薦改用SM3/SHA-256。
API方法與使用
digest MD5摘要
let str1 = "鴻蒙技術(shù)交流QQ群:1029219059";
let digest1 = await MD5.digest(str1);
LogUtil.error(`摘要,異步: ${digest1}`);
let digest2 = MD5.digestSync(str1);
LogUtil.error(`摘要,同步1: ${digest2}`);
let digest3 = MD5.digestSync(str1, 'base64');
LogUtil.error(`摘要,同步2: ${digest3}`);
digestSegment MD5摘要,分段
let str3 = "harmony-utils,一款高效的HarmonyOS工具包,封裝了常用工具類(lèi),提供一系列簡(jiǎn)單易用的方法。幫助開(kāi)發(fā)者快速構(gòu)建鴻蒙應(yīng)用。gitee地址:https://gitee.com/tongyuyan/harmony-utils。github主頁(yè)地址:https://github.com/787107497。";
let digest1 = await MD5.digestSegment(str3);
LogUtil.error(`分段摘要,異步: ${digest1}`);
let digest2 = MD5.digestSegmentSync(str3);
LogUtil.error(`分段摘要,同步1: ${digest2}`);
let digest3 = MD5.digestSegmentSync(str3, 'base64', 256);
LogUtil.error(`分段摘要,同步2: ${digest3}`);
hmac 消息認(rèn)證碼計(jì)算
let symKey = CryptoUtil.generateSymKeySync("AES256");
let str1 = "鴻蒙技術(shù)交流QQ群:1029219059";
let digest1 = await MD5.hmac(str1, symKey);
LogUtil.error(`消息認(rèn)證碼計(jì)算,異步: ${digest1}`);
let digest2 = MD5.hmacSync(str1, symKey);
LogUtil.error(`消息認(rèn)證碼計(jì)算,同步1: ${digest2}`);
let digest3 = MD5.hmacSync(str1, symKey, 'base64');
LogUtil.error(`消息認(rèn)證碼計(jì)算,同步2: ${digest3}`);
hmacSegment 消息認(rèn)證碼計(jì)算,分段
let symKey = CryptoUtil.generateSymKeySync("AES256");
let str3 = "harmony-utils,一款高效的HarmonyOS工具包,封裝了常用工具類(lèi),提供一系列簡(jiǎn)單易用的方法。幫助開(kāi)發(fā)者快速構(gòu)建鴻蒙應(yīng)用。gitee地址:https://gitee.com/tongyuyan/harmony-utils。github主頁(yè)地址:https://github.com/787107497。";
let digest1 = await MD5.hmacSegment(str3, symKey);
LogUtil.error(`分段消息認(rèn)證碼計(jì)算,異步: ${digest1}`);
let digest2 = MD5.hmacSegmentSync(str3, symKey);
LogUtil.error(`分段消息認(rèn)證碼計(jì)算,同步1: ${digest2}`);
let digest3 = MD5.hmacSegmentSync(str3, symKey, 'hex', 256);
LogUtil.error(`分段消息認(rèn)證碼計(jì)算,同步2: ${digest3}`);
創(chuàng)作不易,請(qǐng)給童長(zhǎng)老點(diǎn)贊
審核編輯 黃宇
-
md5
+關(guān)注
關(guān)注
0文章
30瀏覽量
21098 -
HarmonyOS
+關(guān)注
關(guān)注
80文章
2126瀏覽量
33085
發(fā)布評(píng)論請(qǐng)先 登錄
評(píng)論