一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

harmony-utils之RSA,RSA加解密

童長(zhǎng)老 ? 來源:jf_14594073 ? 作者:jf_14594073 ? 2025-06-30 16:52 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

harmony-utils之RSA,RSA加解密

harmony-utils 簡(jiǎn)介與說明


[harmony-utils] 一款功能豐富且極易上手的HarmonyOS工具庫(kù),借助眾多實(shí)用工具類,致力于助力開發(fā)者迅速構(gòu)建鴻蒙應(yīng)用。其封裝的工具涵蓋了APP、設(shè)備、屏幕、授權(quán)、通知、線程間通信、彈框、吐司、生物認(rèn)證、用戶首選項(xiàng)、拍照、相冊(cè)、掃碼、文件、日志、異常捕獲、字符、字符串、數(shù)字、集合、日期、隨機(jī)、base64、加密、解密、JSON等一系列的功能和作,能夠滿足各種不同的開發(fā)需求。
[picker_utils] 是harmony-utils拆分出來的一個(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);
 }

RSA 算法簡(jiǎn)介


RSA是1977年提出的非對(duì)稱加密算法,基于大數(shù)分解難題設(shè)計(jì),密鑰分為公鑰(e,n)和私鑰(d,n),其中n為兩質(zhì)數(shù)乘積,d是e的模逆元。加密時(shí)將明文m通過c=m^e mod n生成密文,解密則用m=c^d mod n。其安全性依賴分解大數(shù)n的計(jì)算復(fù)雜度,常用于HTTPS密鑰傳輸、數(shù)字簽名等場(chǎng)景。但因計(jì)算效率低,不適合加密大量數(shù)據(jù),且1024位密鑰已可被量子計(jì)算威脅,現(xiàn)推薦2048位以上密鑰,是公鑰加密體系的開創(chuàng)性算法。

RSA 應(yīng)用場(chǎng)景


RSA作為非對(duì)稱加密算法,核心應(yīng)用于需公鑰驗(yàn)證、私鑰保密的場(chǎng)景。網(wǎng)絡(luò)通信中,HTTPS用其加密對(duì)稱會(huì)話密鑰,PGP加密郵件;數(shù)字簽名領(lǐng)域,涵蓋軟件代碼簽名、區(qū)塊鏈交易認(rèn)證及電子文檔簽章;密鑰管理上,支持SSH無密碼登錄與VPN密鑰協(xié)商;金融場(chǎng)景中,銀行U盾、CA證書體系依賴其實(shí)現(xiàn)身份驗(yàn)證與抗抵賴性。雖計(jì)算開銷大,不適合海量數(shù)據(jù)加密,但在密鑰安全傳輸和簽名認(rèn)證中不可或缺,是互聯(lián)網(wǎng)安全體系的基礎(chǔ)算法。

API方法與使用


generateKeyPair 生成非對(duì)稱密鑰KeyPair
let keyPair1 = await RSA.generateKeyPair();
let pubKeyStr1 = CryptoHelper.dataBlobToStr(keyPair1.pubKey.getEncoded(), 'hex'); //將公鑰轉(zhuǎn)換成base64字符串。
LogUtil.error(`pubKeyStr1: ${pubKeyStr1}`);
let priKeyStr1 = CryptoHelper.dataBlobToStr(keyPair1.priKey.getEncoded(), 'hex'); //將私鑰轉(zhuǎn)換成base64符符串。
LogUtil.error(`priKeyStr1: ${priKeyStr1}`);
getConvertKeyPair 獲取轉(zhuǎn)換的非對(duì)稱密鑰KeyPair
let pubKeyStr = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDDUpsnavHoapoKtOOM9NKqTt6BpPe07ZzxhMcLAm5dtFQ6zRyJwT3czHGnh1BM2FATvLTDGLkmKc/Ww27//lFbrbqBE19R/5y8UPRpbUdACZ28yqzdiaquovUndhTH/CnLzcPM7VnWO0gp3/kbg5WizkZtUTRHL+Nu4OHbbesO1wIDAQAB"; //base64字符串密鑰
let priKeyStr = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAMNSmydq8ehqmgq044z00qpO3oGk97TtnPGExwsCbl20VDrNHInBPdzMcaeHUEzYUBO8tMMYuSYpz9bDbv/+UVutuoETX1H/nLxQ9GltR0AJnbzKrN2Jqq6i9Sd2FMf8KcvNw8ztWdY7SCnf+RuDlaLORm1RNEcv427g4dtt6w7XAgMBAAECgYANvgsii9i3VIDADhgQe80ypFftYTD4btti9seWU7Z2K1Ddzj6axpjWpx+7/L4+md2Qde915pBoSfrQjnGJ21fX7vpqOVdDWS7lseYfM50z8ZMpZewxJNBkSGYQEazMYDfyCFMjZmB4guf/uu0B2JN/YtA8Ed7JJlkXmVLh4ReYSQJBAOIhzozpcIuGOBjylQdN+MokiL14gnAh6hiwnusD9JlTSJbQonUXkhikaf0WphxBVPSngZDdi3FYla/CDUAScBMCQQDdHwsJZ1oShtbJltaUCEsJHTWLwYm8V8tTOpHGJU8/u1mBK3pVZlwnfzzrj2oLl5iBpMHF197TPNi5gjrjM6atAkA/4pMrBixQjqu8iJQHy0R1P1sORER9j2dGcGeFN8nbo0bHrMuozu7sXU7APKzTILXypHwbRCvH6uHnFKiPqGXXAkAUsjEgQjImBcTYvWt8E4Kiab93QzgXDsiTE6pNN3TBbFGmS2F52MjLUZdsHNI6H4hAqiEQ2XGbp9hJFK1aUp1JAkEAjP4fbqrAUjGiG+EbjEffV625kACb6q9Wz+vbspMPqcr5TU2AxxSW65Yilq4pKYq8O+qXnVdOpX7DjrWA1kg2JA=="; //base64字符串密鑰
let keyPair1 = await RSA.getConvertKeyPair(pubKeyStr, priKeyStr, 'base64');
let keyPair2 = RSA.getConvertKeyPairSync(pubKeyStr, priKeyStr, 'base64');
encrypt 加密
let keyPair1 = await RSA.generateKeyPair(); //生成密鑰

let str1 = "鴻蒙技術(shù)交流QQ群:1029219059";
let dataBlob = CryptoHelper.strToDataBlob(str1, 'utf-8'); //待加密數(shù)據(jù)

let encryptDataBlob = await RSA.encrypt(dataBlob, keyPair1.pubKey); //加密
let encryptStr = CryptoHelper.dataBlobToStr(encryptDataBlob, 'utf-8');
LogUtil.error(`加密,異步:${encryptStr}`);
decrypt 解密
let keyPair1 = await RSA.generateKeyPair(); //生成密鑰

let str1 = "鴻蒙技術(shù)交流QQ群:1029219059";
let dataBlob = CryptoHelper.strToDataBlob(str1, 'utf-8'); //待加密數(shù)據(jù)

let encryptDataBlob = await RSA.encrypt(dataBlob, keyPair1.pubKey); //加密
let decryptDataBlob = await RSA.decrypt(encryptDataBlob, keyPair1.priKey); //解密
let decryptStr = CryptoHelper.dataBlobToStr(decryptDataBlob, 'utf-8');
LogUtil.error(`解密,異步:${decryptStr}`);or(`加解密,同步:${decryptStr2}`);
encryptSegment 加密,分段
let keyPair1 = await RSA.generateKeyPair("RSA1024|PRIMES_2"); //生成密鑰

let str2 = "harmony-utils,一款高效的HarmonyOS工具包,封裝了常用工具類,提供一系列簡(jiǎn)單易用的方法。幫助開發(fā)者快速構(gòu)建鴻蒙應(yīng)用。";
let dataBlob = CryptoHelper.strToDataBlob(str2, 'utf-8'); //待加密數(shù)據(jù)

let encryptDataBlob = await RSA.encryptSegment(dataBlob, keyPair1.pubKey, 'RSA2048|PKCS1'); //加密
let encryptStr = CryptoHelper.dataBlobToStr(encryptDataBlob, 'utf-8');
LogUtil.error(`分段加密,異步:${encryptStr}`);
decryptSegment 解密,分段
let keyPair1 = await RSA.generateKeyPair("RSA1024|PRIMES_2"); //生成密鑰

let str2 = "harmony-utils,一款高效的HarmonyOS工具包,封裝了常用工具類,提供一系列簡(jiǎn)單易用的方法。幫助開發(fā)者快速構(gòu)建鴻蒙應(yīng)用。";
let dataBlob = CryptoHelper.strToDataBlob(str2, 'utf-8'); //待加密數(shù)據(jù)

let encryptDataBlob = await RSA.encryptSegment(dataBlob, keyPair1.pubKey, 'RSA2048|PKCS1'); //加密
let decryptDataBlob = await RSA.decryptSegment(encryptDataBlob, keyPair1.priKey, 'RSA2048|PKCS1'); //解密
let decryptStr = CryptoHelper.dataBlobToStr(decryptDataBlob, 'utf-8');
LogUtil.error(`分段解密,異步:${decryptStr}`);
sign 對(duì)數(shù)據(jù)進(jìn)行簽名
let keyPair = await RSA.generateKeyPair(); //生成密鑰

let str1 = "鴻蒙技術(shù)交流QQ群:1029219059";
let dataBlob = CryptoHelper.strToDataBlob(str1, 'utf-8');

let signDataBlob1 = await RSA.sign(dataBlob, keyPair.priKey);
let signStr1 = CryptoHelper.dataBlobToStr(signDataBlob1, 'hex');
LogUtil.error(`簽名,異步: ${signStr1}`);
verify 對(duì)數(shù)據(jù)進(jìn)行驗(yàn)簽
let keyPair = await RSA.generateKeyPair(); //生成密鑰

let str1 = "鴻蒙技術(shù)交流QQ群:1029219059";
let signDataBlob1 = await RSA.sign(dataBlob, keyPair.priKey);
let signStr1 = CryptoHelper.dataBlobToStr(signDataBlob1, 'hex');

let verify1 = await RSA.verify(dataBlob, signDataBlob1, keyPair!.pubKey);
LogUtil.error(`驗(yàn)簽,異步: ${verify1}`);
signSegment 對(duì)數(shù)據(jù)進(jìn)行分段簽名
let keyPair1 = await RSA.generateKeyPair(); //生成密鑰

let str3 = "harmony-utils,一款高效的HarmonyOS工具包,封裝了常用工具類,提供一系列簡(jiǎn)單易用的方法。幫助開發(fā)者快速構(gòu)建鴻蒙應(yīng)用。gitee地址:https://gitee.com/tongyuyan/harmony-utils。github主頁地址:https://github.com/787107497。";
let data = CryptoHelper.strToUint8Array(str3, 'utf-8');

let signDataBlob = await RSA.signSegment(data, keyPair.priKey);
let signStr = CryptoHelper.dataBlobToStr(signDataBlob, 'base64');
LogUtil.error(`分段簽名,異步: ${signStr}`);
verifySegment 對(duì)數(shù)據(jù)進(jìn)行分段驗(yàn)簽
let keyPair1 = await RSA.generateKeyPair(); //生成密鑰

let str3 = "harmony-utils,一款高效的HarmonyOS工具包,封裝了常用工具類,提供一系列簡(jiǎn)單易用的方法。幫助開發(fā)者快速構(gòu)建鴻蒙應(yīng)用。gitee地址:https://gitee.com/tongyuyan/harmony-utils。github主頁地址:https://github.com/787107497。";
let data = CryptoHelper.strToUint8Array(str3, 'utf-8');
let signDataBlob = await RSA.signSegment(data, keyPair.priKey);

let verify = await RSA.verifySegment(data, signDataBlob, keyPair.pubKey);
LogUtil.error(`分段驗(yàn)簽,異步: ${verify}`);
recover 對(duì)數(shù)據(jù)進(jìn)行簽名恢復(fù)原始數(shù)據(jù),目前僅RSA支持
let keyPair1 = await RSA.generateKeyPair(); //生成密鑰

let str1 = "鴻蒙技術(shù)交流QQ群:1029219059";
let dataBlob = CryptoHelper.strToDataBlob(str1, 'utf-8');
let signDataBlob = RSA.signSync(dataBlob, keyPair.priKey, 'RSA1024|PKCS1|NoHash|OnlySign');

let recoverDataBlob = await RSA.recover(signDataBlob, keyPair.pubKey);
if (recoverDataBlob != null) {
  let recoverStr = CryptoHelper.dataBlobToStr(recoverDataBlob, 'utf-8');
  LogUtil.error(`簽名恢復(fù),異步: ${recoverStr}`);
} else {
  LogUtil.error(`簽名恢復(fù),異步: 恢復(fù)數(shù)據(jù)為空!`);
}

創(chuàng)作不易,請(qǐng)給童長(zhǎng)老點(diǎn)贊

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • RSA
    RSA
    +關(guān)注

    關(guān)注

    0

    文章

    60

    瀏覽量

    19300
  • Harmony
    +關(guān)注

    關(guān)注

    0

    文章

    108

    瀏覽量

    3021
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    harmony-utilsCacheUtil,緩存工具類

    harmony-utilsCacheUtil,緩存工具類
    的頭像 發(fā)表于 07-04 16:36 ?126次閱讀

    harmony-utilsCharUtil,字符工具類

    harmony-utilsCharUtil,字符工具類
    的頭像 發(fā)表于 07-04 16:34 ?129次閱讀

    harmony-utilsDeviceUtil,設(shè)備相關(guān)工具類

    harmony-utilsDeviceUtil,設(shè)備相關(guān)工具類
    的頭像 發(fā)表于 07-03 18:27 ?162次閱讀

    harmony-utilsFileUtil,文件相關(guān)工具類

    harmony-utilsFileUtil,文件相關(guān)工具類
    的頭像 發(fā)表于 07-03 18:23 ?138次閱讀

    harmony-utilsImageUtil,圖片相關(guān)工具類

    harmony-utilsImageUtil,圖片相關(guān)工具類
    的頭像 發(fā)表于 07-03 18:22 ?174次閱讀

    harmony-utilsNumberUtil,Number工具類

    harmony-utilsNumberUtil,Number工具類 harmony-utils 簡(jiǎn)介與說明 harmony-utils 一款功能豐富且極易上手的HarmonyOS工具
    的頭像 發(fā)表于 07-03 18:08 ?141次閱讀

    harmony-utilsPreviewUtil,文件預(yù)覽工具類

    harmony-utilsPreviewUtil,文件預(yù)覽工具類 harmony-utils 簡(jiǎn)介與說明 [harmony-utils] 一款功能豐富且極易上手的HarmonyOS工
    的頭像 發(fā)表于 07-03 11:40 ?122次閱讀

    harmony-utilsStrUtil,字符串工具類

    harmony-utilsStrUtil,字符串工具類 harmony-utils 簡(jiǎn)介與說明 [harmony-utils] 一款功能豐富且極易上手的HarmonyOS工具庫(kù),借助
    的頭像 發(fā)表于 07-03 11:32 ?100次閱讀

    harmony-utilsTypeUtil,類型檢查工具類

    harmony-utilsTypeUtil,類型檢查工具類 harmony-utils 簡(jiǎn)介與說明 [harmony-utils] 一款功能豐富且極易上手的HarmonyOS工具庫(kù),
    的頭像 發(fā)表于 06-30 17:35 ?114次閱讀

    harmony-utilsAES,AES加解密

    harmony-utilsAES,AES加解密 harmony-utils 簡(jiǎn)介與說明 [harmony-utils] 一款功能豐富且極易
    的頭像 發(fā)表于 06-30 17:30 ?165次閱讀

    harmony-utilsDES,DES加解密

    harmony-utilsDES,DES加解密 harmony-utils 簡(jiǎn)介與說明 [harmony-utils]一款功能豐富且極易上
    的頭像 發(fā)表于 06-30 17:16 ?122次閱讀

    harmony-utilsSM2,SM2加解密

    harmony-utilsSM2,SM2加解密 harmony-utils 簡(jiǎn)介與說明 [harmony-utils] 一款功能豐富且極易
    的頭像 發(fā)表于 06-30 16:47 ?166次閱讀

    harmony-utilsSM4,SM4加解密

    harmony-utilsSM4,SM4加解密 harmony-utils 簡(jiǎn)介與說明 harmony-utils 一款功能豐富且極易上手
    的頭像 發(fā)表于 06-28 18:36 ?130次閱讀

    harmony-utilsAuthUtil,生物認(rèn)證相關(guān)工具類

    # harmony-utilsAuthUtil,生物認(rèn)證相關(guān)工具類 ## harmony-utils 簡(jiǎn)介與說明 ------[harmony-utils]( https
    的頭像 發(fā)表于 06-26 17:43 ?114次閱讀

    harmony-utilsArrayUtil,集合工具類

    # harmony-utilsArrayUtil,集合工具類 ## harmony-utils 簡(jiǎn)介與說明 ------[harmony-utils]( https
    的頭像 發(fā)表于 06-26 17:38 ?108次閱讀