當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Node.js keyObject.asymmetricKeyType用法及代碼示例


keyObject.asymmetricKeyType 屬性為我們標識 key 類型。 key 類型本質上是用於構造 key 實例的算法的名稱。

Node.js 中的 crypto 模塊允許我們借助各種加密算法創建加密 key 實例和相應的 key 對象。

假設使用 “RSA” 算法生成非對稱 key (公鑰和私鑰),則此屬性返回 RSA。

用法:以下是語法keyObject.asymmetricKeyType屬性。此屬性適用於加密 key 對象。

keyObject_name.asymmetricKeyType;

為了演示此屬性的用法,我們將使用 keyObject() 方法創建一個加密 key 對象。

以下是了解關鍵對象類型的必要步驟:

步驟 1:使用微妙.generateKey() 方法生成加密 key 。該方法根據指定的算法生成對稱或非對稱 key 。

以下是生成加密 key 實例的語法:

const key = generateKey(
    algorithm : Object, 
    extractable : boolean, 
    keyUsages : array
);

參數:

  • Algorithm: 該對象指定要生成的 key 類型和其他算法詳細信息。
  • Extractable:一個布爾變量,指示是否可以使用特定技術(例如 SubtleCrypto.exportKey())導出 key 。如果為 true,則無法導出 key 。
  • Keyusages: 列出使用生成的 key 的說明的數組。

返回:加密 key 實例。

步驟 2:使用 KeyObject.from(key) 方法將此加密 key 實例轉換為KeyObject。此方法從非對稱 key 組中獲取單個 key 實例(公鑰或私鑰)並生成相應的 KeyObject。以下是該方法的語法:

keyObject.form( key );

參數:

  • Key:單個 key 實例。 (對稱或非對稱 key )

返回:KeyObject

步驟3:現在我們已經創建了KeyObject,可以在生成的KeyObject上使用keyObject.asymmetricKeyType來獲取生成的KeyObject的類型。

以下是 keyObject.asymmetricKeyType 屬性的語法:

keyObject_name.asymmetricKeyType;

返回:該屬性返回一個字符串,告訴我們鍵的類型。

讓我們通過示例來理解該主題:

示例 1:在此示例中,“RSA-PSS”算法用於生成加密 key 實例。該算法需要兩個 key - 公鑰和私鑰。遵循上述步驟 - 生成加密 key 實例、將加密 key 實例轉換為 KeyObject,並應用屬性 keyObject_name.ametryKeyType:

Javascript


const {
    webcrypto: { subtle }, KeyObject
} = require('node:crypto');
// async function
(async function () {
    // generating the crypto key 
    // RSA Algorithm
    const k = await subtle.generateKey(
        {
            // Algorithm name.
            name: "RSA-PSS",
            // Length of RSA modulus in bits (number of bits).       
            modulusLength: 4044,
            // Unit8Array -  consists of 8-bit unsigned integers.
            publicExponent: new Unit8Array([1, 3, 1]),
            // digital hash function
            hash: "SHA-256"
        }
        // Key is not exportable.
        , false,
        // Key can be used for generating and verifying 
        // the digital signature.
        ['sign', 'verify']
    );
    // Generating keyObject for private Key
    const privet_key_object = KeyObject.from(k.privateKey);
    // printing the asymmetricKeyDetails of private KeyObject
    console.log("privet_key_object.asymmetricKeyType: ", 
        privet_key_object.asymmetricKeyType);
})();

輸出:

privet_key_object.asymmetricKeyType:  rsa

key 的類型為 RSA,這意味著使用 RSA 加密算法來生成 key 實例。

示例 2:在此示例中,“ECDSA”算法用於生成加密 key 實例

Javascript


const {
    webcrypto: { subtle }, KeyObject
} = require('node:crypto');
// async function
(async function () {
    // generating the crypto key 
    // RSA Algorithm
    const k = await subtle.generateKey(
        {
            // Algorithm name.
            name: "ECDSA",
            // Length of RSA modulus in bits (number of bits).
            namedCurve: "P-384",       
            hash: "SHA-256"
        }
        // Key is not exportable.
        , false,
        // Key can be used for generating and verifying 
        // the digital signature.
        ['sign', 'verify']
    );
    // Generating keyObject for private Key
    const privet_key_object = KeyObject.from(k.privateKey);
    // printing the asymmetricKeyDetails of private KeyObject
    console.log("privet_key_object.asymmetricKeyType: ", 
        privet_key_object.asymmetricKeyType);
    // Generating keyObject for public Key
    const public_key_object = KeyObject.from(k.publicKey);
    // printing the asymmetricKeyType  of public KeyObject
    console.log("public_key_object.asymmetricKeyType: ", 
        public_key_object.asymmetricKeyType);
})();

輸出:

privet_key_object.asymmetricKeyType:  ec
public_key_object.asymmetricKeyType:  ec

key 的類型為 EC(橢圓曲線),這意味著使用橢圓曲線加密算法來生成 key 實例。

參考: https://nodejs.org/api/crypto.html#keyobjectasymmetrickeytype



相關用法


注:本文由純淨天空篩選整理自harishcarpenter大神的英文原創作品 Node.js keyObject.asymmetricKeyType Property。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。