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
相關用法
- Node.js keyObject.asymmetricKeyDetails用法及代碼示例
- Node.js keyObject.symmetricKeySize用法及代碼示例
- Node.js keyObject.equals()用法及代碼示例
- Node.js urlObject.auth()用法及代碼示例
- Node.js process.env()用法及代碼示例
- Node.js process.argv0()用法及代碼示例
- Node.js process.argv()用法及代碼示例
- Node.js process.arch()用法及代碼示例
- Node.js Decipher.final()用法及代碼示例
- Node.js crypto.createDiffieHellman()用法及代碼示例
- Node.js v8.deserializer.readHeader()用法及代碼示例
- Node.js v8.deserializer.readRawBytes()用法及代碼示例
- Node.js v8.deserializer.readUint32()用法及代碼示例
- Node.js v8.deserializer.readUint64()用法及代碼示例
- Node.js v8.deserializer.readValue()用法及代碼示例
- Node.js v8.serializer.releaseBuffer()用法及代碼示例
- Node.js v8.serializer.writeDouble()用法及代碼示例
- Node.js v8.serializer.writeHeader()用法及代碼示例
- Node.js v8.serializer.writeRawBytes()用法及代碼示例
- Node.js v8.serializer.writeUint32()用法及代碼示例
- Node.js v8.serializer.writeUint64()用法及代碼示例
- Node.js v8.serializer.writeValue()用法及代碼示例
- Node.js Buffer.allocUnsafe()用法及代碼示例
- Node.js Buffer.allocUnsafeSlow()用法及代碼示例
- Node.js Buffer.byteLength()用法及代碼示例
注:本文由純淨天空篩選整理自harishcarpenter大神的英文原創作品 Node.js keyObject.asymmetricKeyType Property。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。