harmony-utils之ECDSA,ECDSA工具類
harmony-utils 簡介與說明
[harmony-utils] 一款功能豐富且極易上手的HarmonyOS工具庫,借助眾多實用工具類,致力于助力開發者迅速構建鴻蒙應用。其封裝的工具涵蓋了APP、設備、屏幕、授權、通知、線程間通信、彈框、吐司、生物認證、用戶首選項、拍照、相冊、掃碼、文件、日志、異常捕獲、字符、字符串、數字、集合、日期、隨機、base64、加密、解密、JSON等一系列的功能和作,能夠滿足各種不同的開發需求。
[picker_utils]是harmony-utils拆分出來的一個子庫,包含 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);
}
ECDSA 算法簡介
ECDSA(橢圓曲線數字簽名算法)是基于橢圓曲線密碼學的數字簽名方案,核心通過橢圓曲線離散對數問題的難解性保障安全。其原理為:選定橢圓曲線參數后,生成私鑰 (d) 與公鑰 (Q = d times G)((G) 為曲線基點);簽名時結合消息哈希值與隨機數計算簽名對 ((r, s)),驗證時通過公鑰與簽名還原點坐標并比對。
ECDSA 應用場景
ECDSA(橢圓曲線數字簽名算法)基于橢圓曲線離散對數難題,憑借短密鑰、高安全性和低計算開銷,在多場景中發揮關鍵作用。區塊鏈領域,它用于比特幣、以太坊的交易簽名與地址生成,保障交易不可篡改;網絡安全方面,支持TLS/SSL證書簽名,降低握手計算開銷,也適用于VPN和物聯網設備的身份認證。在合規與資源受限場景,它符合國際標準,用于電子證照等,且適配智能卡、手機銀行等低算力設備。與RSA相比,256位ECDSA安全性等效于3072位RSA,簽名數據量小、效率高,更適合區塊鏈、邊緣計算等場景。雖面臨量子計算威脅,但其仍是后量子密碼過渡前的主流簽名方案,在數字簽名領域占據重要地位。
API方法與使用
sign 對數據進行簽名
let keyPair = await CryptoUtil.generateKeyPair('ECC256'); //生成密鑰
let str1 = "鴻蒙技術交流QQ群:1029219059";
let dataBlob = CryptoHelper.strToDataBlob(str1, 'utf-8');
let signDataBlob = await ECDSA.sign(dataBlob, keyPair.priKey);
let signStr = CryptoHelper.dataBlobToStr(signDataBlob, 'hex');
LogUtil.error(`簽名,異步: ${signStr}`);
verify 對數據進行驗簽
let keyPair = await CryptoUtil.generateKeyPair('ECC256'); //生成密鑰
let str1 = "鴻蒙技術交流QQ群:1029219059";
let dataBlob = CryptoHelper.strToDataBlob(str1, 'utf-8');
let signDataBlob = await ECDSA.sign(dataBlob, keyPair.priKey);;
let verify = await ECDSA.verify(dataBlob, signDataBlob, keyPair.pubKey);
LogUtil.error(`驗簽,異步: ${verify}`);
signSegment 對數據進行分段簽名
let keyPair = await CryptoUtil.generateKeyPair('ECC256'); //生成密鑰
let str3 = "harmony-utils,一款高效的HarmonyOS工具包,封裝了常用工具類,提供一系列簡單易用的方法。幫助開發者快速構建鴻蒙應用。gitee地址:https://gitee.com/tongyuyan/harmony-utils。github主頁地址:https://github.com/787107497。";
let data = CryptoHelper.strToUint8Array(str3, 'utf-8');
let signDataBlob = await ECDSA.signSegment(data, keyPair.priKey);
let signStr = CryptoHelper.dataBlobToStr(signDataBlob, 'base64');
LogUtil.error(`分段簽名,異步: ${signStr}`);
verifySegment 對數據進行分段驗簽
let keyPair = await CryptoUtil.generateKeyPair('ECC256'); //生成密鑰
let str3 = "harmony-utils,一款高效的HarmonyOS工具包,封裝了常用工具類,提供一系列簡單易用的方法。幫助開發者快速構建鴻蒙應用。gitee地址:https://gitee.com/tongyuyan/harmony-utils。github主頁地址:https://github.com/787107497。";
let data = CryptoHelper.strToUint8Array(str3, 'utf-8');
let signDataBlob = await ECDSA.signSegment(data, keyPair.priKey);
let verify = await ECDSA.verifySegment(data, signDataBlob, keyPair.pubKey);
LogUtil.error(`分段驗簽,異步: ${verify}`);
創作不易,請給童長老點贊
審核編輯 黃宇
-
ECDSA
+關注
關注
0文章
12瀏覽量
7845 -
HarmonyOS
+關注
關注
80文章
2126瀏覽量
33035
發布評論請先 登錄
評論