女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

鴻蒙開發:Universal Keystore Kit密鑰管理服務 明文導入密鑰 ArkTS

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-07-08 10:22 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

明文導入密鑰(ArkTS)

分別以導入AES256與RSA2048密鑰為例,具體的場景介紹及支持的算法規格

開發步驟

  1. 指定密鑰別名keyAlias。 密鑰別名的最大長度為64字節。
  2. 封裝密鑰屬性集和密鑰材料。
    • 密鑰屬性集同樣與密鑰生成中指定的密鑰屬性一致,須包含[HuksKeyAlg]、[HuksKeySize]、[HuksKeyPurpose]屬性。
    • 密鑰材料須符合[HUKS密鑰材料格式],并以Uint8Array形式賦值給[HuksOptions]的inData字段。
  3. 調用[huks.importKeyItem],傳入密鑰別名和密鑰屬性集,即可導入密鑰。
  4. 開發前請熟悉鴻蒙開發指導文檔 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]
/* 以下以導入AES256密鑰的Callback操作使用為例 */
import { huks } from "@kit.UniversalKeystoreKit"
/* 密鑰材料 */
let plainTextSize32 = new Uint8Array([
    0xfb, 0x8b, 0x9f, 0x12, 0xa0, 0x83, 0x19, 0xbe, 0x6a, 0x6f, 0x63, 0x2a, 0x7c, 0x86, 0xba, 0xca,
    0x64, 0x0b, 0x88, 0x96, 0xe2, 0xfa, 0x77, 0xbc, 0x71, 0xe3, 0x0f, 0x0f, 0x9e, 0x3c, 0xe5, 0xf9
]);
/* 1.確定密鑰別名 */
let keyAlias = 'AES256Alias_sample';
/* 2.封裝密鑰屬性集和密鑰材料 */

let properties: Array< huks.HuksParam > = [
    {
        tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
        value:huks.HuksKeyAlg.HUKS_ALG_AES
    },
    {
        tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
        value: huks.HuksKeySize.HUKS_AES_KEY_SIZE_256
    },
    {
        tag: huks.HuksTag.HUKS_TAG_PURPOSE,
        value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT | huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT
    },
]
let options: huks.HuksOptions = {
    properties: properties,
    inData: plainTextSize32
};
/* 3.明文導入密鑰 */
try {
    huks.importKeyItem(keyAlias, options, (error, data) = > {
        if (error) {
            console.error(`callback: importKeyItem failed` + error);
        } else {
            console.info(`callback: importKeyItem success`);
        }
    });
} catch (error) {
    console.error(`callback: importKeyItem input arg invalid` + error);
}
/* 以下以導入RSA2048密鑰的Callback操作使用為例 */
import { huks } from "@kit.UniversalKeystoreKit"
let rsa2048KeyPairMaterial = new Uint8Array([
  0x01, 0x00, 0x00, 0x00, // 密鑰算法(小端表示)huks.HuksKeyAlg.HUKS_ALG_RSA = 1
  0x00, 0x08, 0x00, 0x00, // 密鑰大小(比特):2048
  0x00, 0x01, 0x00, 0x00, // 模數n長度(字節):256
  0x03, 0x00, 0x00, 0x00, // 公鑰指數e長度(字節):3
  0x00, 0x01, 0x00, 0x00, // 私鑰指數d長度(字節):256
  // 模數n
  0xc5, 0x35, 0x62, 0x48, 0xc4, 0x92, 0x87, 0x73, 0x0d, 0x42, 0x96, 0xfc, 0x7b, 0x11, 0x05, 0x06,
  0x0f, 0x8d, 0x66, 0xc1, 0x0e, 0xad, 0x37, 0x44, 0x92, 0x95, 0x2f, 0x6a, 0x55, 0xba, 0xec, 0x1d,
  0x54, 0x62, 0x0a, 0x4b, 0xd3, 0xc7, 0x05, 0xe4, 0x07, 0x40, 0xd9, 0xb7, 0xc2, 0x12, 0xcb, 0x9a,
  0x90, 0xad, 0xe3, 0x24, 0xe8, 0x5e, 0xa6, 0xf8, 0xd0, 0x6e, 0xbc, 0xd1, 0x69, 0x7f, 0x6b, 0xe4,
  0x2b, 0x4e, 0x1a, 0x65, 0xbb, 0x73, 0x88, 0x6b, 0x7c, 0xaf, 0x7e, 0xd0, 0x47, 0x26, 0xeb, 0xa5,
  0xbe, 0xd6, 0xe8, 0xee, 0x9c, 0xa5, 0x66, 0xa5, 0xc9, 0xd3, 0x25, 0x13, 0xc4, 0x0e, 0x6c, 0xab,
  0x50, 0xb6, 0x50, 0xc9, 0xce, 0x8f, 0x0a, 0x0b, 0xc6, 0x28, 0x69, 0xe9, 0x83, 0x69, 0xde, 0x42,
  0x56, 0x79, 0x7f, 0xde, 0x86, 0x24, 0xca, 0xfc, 0xaa, 0xc0, 0xf3, 0xf3, 0x7f, 0x92, 0x8e, 0x8a,
  0x12, 0x52, 0xfe, 0x50, 0xb1, 0x5e, 0x8c, 0x01, 0xce, 0xfc, 0x7e, 0xf2, 0x4f, 0x5f, 0x03, 0xfe,
  0xa7, 0xcd, 0xa1, 0xfc, 0x94, 0x52, 0x00, 0x8b, 0x9b, 0x7f, 0x09, 0xab, 0xa8, 0xa4, 0xf5, 0xb4,
  0xa5, 0xaa, 0xfc, 0x72, 0xeb, 0x17, 0x40, 0xa9, 0xee, 0xbe, 0x8f, 0xc2, 0xd1, 0x80, 0xc2, 0x0d,
  0x44, 0xa9, 0x59, 0x44, 0x59, 0x81, 0x3b, 0x5d, 0x4a, 0xde, 0xfb, 0xae, 0x24, 0xfc, 0xa3, 0xd9,
  0xbc, 0x57, 0x55, 0xc2, 0x26, 0xbc, 0x19, 0xa7, 0x9a, 0xc5, 0x59, 0xa3, 0xee, 0x5a, 0xef, 0x41,
  0x80, 0x7d, 0xf8, 0x5e, 0xc1, 0x1d, 0x32, 0x38, 0x41, 0x5b, 0xb6, 0x92, 0xb8, 0xb7, 0x03, 0x0d,
  0x3e, 0x59, 0x0f, 0x1c, 0xb3, 0xe1, 0x2a, 0x95, 0x1a, 0x3b, 0x50, 0x4f, 0xc4, 0x1d, 0xcf, 0x73,
  0x7c, 0x14, 0xca, 0xe3, 0x0b, 0xa7, 0xc7, 0x1a, 0x41, 0x4a, 0xee, 0xbe, 0x1f, 0x43, 0xdd, 0xf9,
  // 公鑰指數e
  0x01, 0x00, 0x01,
  // 私鑰指數d
  0x88, 0x4b, 0x82, 0xe7, 0xe3, 0xe3, 0x99, 0x75, 0x6c, 0x9e, 0xaf, 0x17, 0x44, 0x3e, 0xd9, 0x07,
  0xfd, 0x4b, 0xae, 0xce, 0x92, 0xc4, 0x28, 0x44, 0x5e, 0x42, 0x79, 0x08, 0xb6, 0xc3, 0x7f, 0x58,
  0x2d, 0xef, 0xac, 0x4a, 0x07, 0xcd, 0xaf, 0x46, 0x8f, 0xb4, 0xc4, 0x43, 0xf9, 0xff, 0x5f, 0x74,
  0x2d, 0xb5, 0xe0, 0x1c, 0xab, 0xf4, 0x6e, 0xd5, 0xdb, 0xc8, 0x0c, 0xfb, 0x76, 0x3c, 0x38, 0x66,
  0xf3, 0x7f, 0x01, 0x43, 0x7a, 0x30, 0x39, 0x02, 0x80, 0xa4, 0x11, 0xb3, 0x04, 0xd9, 0xe3, 0x57,
  0x23, 0xf4, 0x07, 0xfc, 0x91, 0x8a, 0xc6, 0xcc, 0xa2, 0x16, 0x29, 0xb3, 0xe5, 0x76, 0x4a, 0xa8,
  0x84, 0x19, 0xdc, 0xef, 0xfc, 0xb0, 0x63, 0x33, 0x0b, 0xfa, 0xf6, 0x68, 0x0b, 0x08, 0xea, 0x31,
  0x52, 0xee, 0x99, 0xef, 0x43, 0x2a, 0xbe, 0x97, 0xad, 0xb3, 0xb9, 0x66, 0x7a, 0xae, 0xe1, 0x8f,
  0x57, 0x86, 0xe5, 0xfe, 0x14, 0x3c, 0x81, 0xd0, 0x64, 0xf8, 0x86, 0x1a, 0x0b, 0x40, 0x58, 0xc9,
  0x33, 0x49, 0xb8, 0x99, 0xc6, 0x2e, 0x94, 0x70, 0xee, 0x09, 0x88, 0xe1, 0x5c, 0x4e, 0x6c, 0x22,
  0x72, 0xa7, 0x2a, 0x21, 0xdd, 0xd7, 0x1d, 0xfc, 0x63, 0x15, 0x0b, 0xde, 0x06, 0x9c, 0xf3, 0x28,
  0xf3, 0xac, 0x4a, 0xa8, 0xb5, 0x50, 0xca, 0x9b, 0xcc, 0x0a, 0x04, 0xfe, 0x3f, 0x98, 0x68, 0x81,
  0xac, 0x24, 0x53, 0xea, 0x1f, 0x1c, 0x6e, 0x5e, 0xca, 0xe8, 0x31, 0x0d, 0x08, 0x12, 0xf3, 0x26,
  0xf8, 0x5e, 0xeb, 0x10, 0x27, 0xae, 0xaa, 0xc3, 0xad, 0x6c, 0xc1, 0x89, 0xdb, 0x7d, 0x5a, 0x12,
  0x55, 0xad, 0x11, 0x19, 0xa1, 0xa9, 0x8f, 0x0b, 0x6d, 0x78, 0x8d, 0x1c, 0xdf, 0xe5, 0x63, 0x82,
  0x0b, 0x7d, 0x23, 0x04, 0xb4, 0x75, 0x8c, 0xed, 0x77, 0xfc, 0x1a, 0x85, 0x29, 0x11, 0xe0, 0x61,
]);

/* 1.確定密鑰別名 */
let keyAlias = 'RSA_sample';
/* 2.封裝密鑰屬性集和密鑰材料 */
let properties: Array< huks.HuksParam > = [
  {
    tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
    value:huks.HuksKeyAlg.HUKS_ALG_RSA
  },
  {
    tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
    value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_2048
  },
  {
// 此 tag表示密鑰導入后的用途,導入后將不可更改
    tag: huks.HuksTag.HUKS_TAG_PURPOSE,
    value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT | huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT
  },
  {
// 此 tag表示需導入的密鑰類型
    tag: huks.HuksTag.HUKS_TAG_IMPORT_KEY_TYPE,
// 此 value表示導入密鑰對,若改為HUKS_KEY_TYPE_PUBLIC_KEY時表示僅導入公鑰
    value: huks.HuksImportKeyType.HUKS_KEY_TYPE_KEY_PAIR 
  },
]
let options: huks.HuksOptions = {
  properties: properties,
  inData: rsa2048KeyPairMaterial
};
/* 3.明文導入密鑰 */
try {
  huks.importKeyItem(keyAlias, options, (error, data) = > {
    if (error) {
      console.error(`callback: importKeyItem failed` + error);
    } else {
      console.info(`callback: importKeyItem success`);
    }
  });
} catch (error) {
  console.error(`callback: importKeyItem input arg invalid` + error);
}

調測驗證

調用[huks.isKeyItemExist]驗證密鑰是否存在,如密鑰存在即表示密鑰導入成功。

QQ截圖20240705211227.png

`HarmonyOSOpenHarmony鴻蒙文檔籽料:mau123789是v直接拿`

import { huks } from "@kit.UniversalKeystoreKit";
let keyAlias = 'AES256Alias_sample';
let isKeyExist = false;

let keyProperties: Array< huks.HuksParam > = [
    {
        tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
        value: huks.HuksKeyAlg.HUKS_ALG_AES
    }
]
let huksOptions: huks.HuksOptions = {
    properties: keyProperties, // 非空填充
    inData: new Uint8Array(new Array()) // 非空填充
}
try {
    huks.isKeyItemExist(keyAlias, huksOptions, (error, data) = > {
        if (error) {
            console.error(`callback: isKeyItemExist failed` + error);
        } else {
            if (data !== null && data.valueOf() !== null) {
                isKeyExist = data.valueOf();
                console.info(`callback: isKeyItemExist success, isKeyExist = ${isKeyExist}`);
            }
        }
    });
} catch (error) {
    console.error(`callback: isKeyItemExist input arg invalid` + error);
}

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 密鑰
    +關注

    關注

    1

    文章

    146

    瀏覽量

    20273
  • 鴻蒙
    +關注

    關注

    60

    文章

    2619

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    根據Datasheet里cyT2B5L有1024位otp,全部都能用來存儲密鑰嗎?

    1)項目上有要求把密鑰存在安全模塊存儲區域的要求 2)根據Datasheet里cyT2B5L有1024位otp,全部都能用來存儲密鑰嗎?還是其中的192位能用來儲存密鑰。 3)有詳細的說明文
    發表于 07-14 07:17

    使用DevEcoStudio 開發、編譯鴻蒙 NEXT_APP 以及使用中文插件

    的一站式集成開發環境(IDE),專為鴻蒙操作系統(HarmonyOS Next)應用和服務開發設計 DevEco Studio,掌握基本操作和開發
    發表于 06-11 17:18

    HarmonyOS5云服務技術分享--ArkTS開發函數

    等打包 ? 支持Node.js 14.x/18.x和Java 1.8 ? 支持HTTP觸發器調用 ? 持續開發調試一條龍 ?? 準備工作: 安裝AGCLI工具(華為應用分發服務命令行工具) 準備測試
    發表于 05-22 17:29

    鴻蒙應用元服務開發-Account Kit配置登錄權限

    的用戶體系。 用戶打開元服務時,不需要用戶點擊登錄/注冊按鈕,即可獲取用戶的身份標識UnionID/OpenID,完成靜默登錄。靜默登錄詳細接入體驗可參考Account Kit提供的SampleCode
    發表于 04-15 16:03

    鴻蒙應用元服務開發-Account Kit獲取收貨地址

    Fusion Kit對應的Button組件并設置openType為CHOOSE_ADDRESS,打開華為賬號收貨地址管理頁面。 用戶可以在收貨地址管理頁面添加新的收貨地址或者選擇已有收貨地址,點擊確認后
    發表于 04-07 17:15

    鴻蒙應用元服務開發-Account Kit獲發票抬頭

    一、場景介紹 當元服務需要獲取用戶發票抬頭時,可使用選擇發票抬頭Button,幫助用戶打開發票抬頭選擇頁面進行選擇或管理發票抬頭。 二、業務流程 流程說明: 用戶需要使用發票抬頭時,元服務
    發表于 04-01 15:26

    鴻蒙應用元服務開發-Account Kit概述

    賬號服務功能當前僅支持中國境內(不包含中國香港、中國澳門、中國臺灣)。 五、華為賬號登錄管理細則 為了確保用戶獲得良好的登錄體驗,根據《華為開發服務協議》、《華為APIs使用協議》、
    發表于 03-31 12:08

    如何將Keyring用于CAAM分區加密的密鑰

    我正在按照此方法加密我的 emmc 分區 - 1. 生成密鑰: keyname=dm_trust KEY=“$(keyctl add trusted $KEYNAME \'new 32\' @s
    發表于 03-20 06:40

    鴻蒙Flutter實戰:06-使用ArkTs開發Flutter鴻蒙插件

    # 使用 ArkTs 開發 Flutter 鴻蒙平臺插件 本文講述如何開發一個 Flutter 鴻蒙插件,如何實現 Flutter 與
    發表于 10-22 21:56

    鴻蒙原生應用元服務開發-倉頡ArkTS相互操作(一)

    ArkTS 運行時接口,為用戶提供庫級別的 ArkTS 互操作能力。一、使用場景: 1.在 ArkTS 應用開發倉頡模塊:把用戶倉頡代碼封裝成為
    發表于 07-31 17:43

    鴻蒙開發Universal Keystore Kit密鑰管理服務 密鑰刪除C C++

    為保證數據安全性,當不需要使用該密鑰時,應該刪除密鑰
    的頭像 發表于 07-18 15:47 ?493次閱讀

    鴻蒙開發Universal Keystore Kit 密鑰管理服務 密鑰導出 C C++

    業務需要獲取持久化存儲的非對稱密鑰的公鑰時使用,當前支持ECC/RSA/ED25519/X25519的公鑰導出。
    的頭像 發表于 07-18 10:28 ?626次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</b>:<b class='flag-5'>Universal</b> <b class='flag-5'>Keystore</b> <b class='flag-5'>Kit</b> <b class='flag-5'>密鑰</b><b class='flag-5'>管理</b><b class='flag-5'>服務</b> <b class='flag-5'>密鑰</b>導出 C C++

    鴻蒙開發Universal Keystore Kit 密鑰管理服務 查詢密鑰別名集 ArkTS

    HUKS提供了接口供應用查詢密鑰別名集。
    的頭像 發表于 07-18 09:34 ?596次閱讀

    鴻蒙開發Universal Keystore Kit 密鑰管理服務 獲取密鑰屬性ArkTS

    HUKS提供了接口供業務獲取指定密鑰的相關屬性。在獲取指定密鑰屬性前,需要確保已在HUKS中生成或導入持久化存儲的密鑰
    的頭像 發表于 07-17 10:46 ?562次閱讀

    鴻蒙開發Universal Keystore Kit 密鑰管理服務 獲取密鑰屬性C C++

    HUKS提供了接口供業務獲取指定密鑰的相關屬性。在獲取指定密鑰屬性前,需要確保已在HUKS中生成或導入持久化存儲的密鑰
    的頭像 發表于 07-17 09:47 ?619次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</b>:<b class='flag-5'>Universal</b> <b class='flag-5'>Keystore</b> <b class='flag-5'>Kit</b> <b class='flag-5'>密鑰</b><b class='flag-5'>管理</b><b class='flag-5'>服務</b> 獲取<b class='flag-5'>密鑰</b>屬性C C++