当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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