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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。