在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

    瀏覽量

    20229
  • 鴻蒙
    +關注

    關注

    59

    文章

    2588

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

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

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

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

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

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

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

    HUKS提供了接口供業務獲取指定密鑰的相關屬性。在獲取指定密鑰屬性前,需要確保已在HUKS中生成或導入持久化存儲的密鑰
    的頭像 發表于 07-17 09:47 ?610次閱讀
    <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密鑰管理服務 密鑰證明介紹及算法規格

    HUKS為密鑰提供合法性證明能力,主要應用于非對稱密鑰的公鑰的證明。
    的頭像 發表于 07-15 18:28 ?960次閱讀

    鴻蒙開發Universal Keystore Kit 密鑰管理服務 HMAC ArkTS

    HMAC是密鑰相關的哈希運算消息認證碼(Hash-based Message Authentication Code),是一種基于Hash函數和密鑰進行消息認證的方法。
    的頭像 發表于 07-12 18:22 ?941次閱讀

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

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

    鴻蒙開發Universal Keystore Kit密鑰管理服務 密鑰派生C、C++

    以HKDF256密鑰為例,完成密鑰派生。具體的場景介紹及支持的算法規格,請參考[密鑰生成支持的算法]。
    的頭像 發表于 07-11 14:28 ?533次閱讀
    <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 密鑰管理服務 密鑰協商 C、C++

    以協商密鑰類型為ECDH,并密鑰僅在HUKS內使用為例,完成密鑰協商。具體的場景介紹及支持的算法規格,請參考[密鑰生成支持的算法]。
    的頭像 發表于 07-10 14:27 ?615次閱讀
    <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

    以協商密鑰類型為X25519 256,并密鑰僅在HUKS內使用為例,完成密鑰協商。
    的頭像 發表于 07-10 09:22 ?622次閱讀
    <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>協商<b class='flag-5'>ArkTS</b>

    鴻蒙開發Universal Keystore Kit 密鑰管理服務 密鑰使用介紹及通用流程

    為了實現對數據機密性、完整性等保護,可使用生成/導入密鑰,對數據進行密鑰操作
    的頭像 發表于 07-09 11:56 ?997次閱讀
    <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>使用介紹及通用流程

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

    以加密導入ECDH密鑰對為例,涉及業務側加密密鑰的[密鑰生成]、[協商]等操作不在本示例中體現。
    的頭像 發表于 07-08 15:26 ?665次閱讀
    <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><b class='flag-5'>密鑰</b>C、C++

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

    以加密導入ECDH密鑰對為例,涉及業務側加密密鑰的[密鑰生成]、[協商])等操作不在本示例中體現。
    的頭像 發表于 07-08 14:22 ?653次閱讀
    <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><b class='flag-5'>密鑰</b> <b class='flag-5'>ArkTS</b>

    鴻蒙開發Universal Keystore Kit密鑰管理服務 明文導入密鑰C、C++

    明文導入ECC密鑰為例。具體的場景介紹及支持的算法規格
    的頭像 發表于 07-08 10:01 ?490次閱讀
    <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><b class='flag-5'>導入</b><b class='flag-5'>密鑰</b>C、C++

    鴻蒙開發Universal Keystore Kit密鑰管理服務 密鑰導入介紹及算法規格

    如果業務在HUKS外部生成密鑰(比如應用間協商生成、服務器端生成),業務可以將密鑰導入到HUKS中由HUKS進行管理
    的頭像 發表于 07-06 10:45 ?957次閱讀
    <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><b class='flag-5'>導入</b>介紹及算法規格
    主站蜘蛛池模板: 小雪被撑暴黑人黑人与亚洲女人 | 日本三级人妇 | 国产三级日产三级韩国三级 | 亚洲美女激情视频 | 一区二区午夜 | 欧美一级欧美一级高清 | 天堂-bt种子 | 男人呻吟双腿大开男男h互攻 | 五月天婷婷色 | 免费一级特黄a | 亚洲成人午夜影院 | 久久久网站亚洲第一 | 国产综合图片 | 日本综合视频 | 日韩免费视频一区二区 | 亚洲va久久久噜噜噜久久男同 | 特级一级全黄毛片免费 | 成人国产精品毛片 | 高清性色生活片久久久 | 日本一二线不卡在线观看 | 久久天天丁香婷婷中文字幕 | 亚洲区免费 | 欧美一区二区影院 | 国产三级在线免费观看 | 夜夜爽天天操 | 国产成人优优影院 | 女人被男人免费播放网站 | 一级 黄 色 毛片 | 狠狠干2015 | 亚洲w码欧洲s码免费 | 久久夜夜肉肉热热日日 | 久久精品福利 | 日韩午夜片 | 午夜国产精品视频 | 欧美一级特黄aaaaaa在线看片 | 综合五月 | 亚洲韩国日本欧美一区二区三区 | 久久综合五月婷婷 | 国产黄色小视频网站 | 国产高清免费午夜在线视频 | 亚洲国产成人精品青青草原100 |