Node.js keyObject.equals() 方法

Node.js keyObject.equals() 方法

keyObject.equals() 方法是Node.js中加密模块中的一个方法,允许您比较两个密钥对象。默认情况下,该方法返回一个布尔值,指示传递的keyObject是否等于应用该方法的密钥对象。该方法根据密钥的类型、值和参数进行决策。

语法:

keyObject.equals(KeyObject);

返回值: 该方法返回一个布尔值,指示传入的keyObject是否等于应用该方法的key对象。

现在我们来看一些keyObject.equals(otherKeyObject)方法的示例。

示例1: 让我们创建另一个具有相同算法和属性的keyObject,并使用keyObject.equals()方法比较上面那一个和这个新创建的keyObject。

// Importing the crypto module
const {
    webcrypto: { subtle }, KeyObject
} = require('node:crypto');
 
(async function () {
 
    //  Crypto Key Instance 
    const k1 = await subtle.generateKey({
 
        // Algorithm name
        name: 'AES-CBC',
         
        // Length of key in bits.
        length: 192,
    },
        // Not exportable.
        false,
         
        // Key can be used in encryption
        // and decryption
        ['encrypt', 'decrypt']);
 
    // Creating KeyObject-1
    const keyObject1 = KeyObject.from(k1);
 
    // Creating KeyObject-2 using same key Instance
    const keyObject2 = KeyObject.from(k1);
 
    // Comparing both KeyObjects:
    result = keyObject1.equals(keyObject2);
 
    // Printing the result 
    console.log(result);
 
})();

输出: 在上面的示例中,使用相同的加密密钥实例创建了两个关键对象。然后我使用keyObject.equals()方法来检查这两个关键对象是否相等。结果是true,因为这两个关键对象都使用相同的加密密钥实例生成。对于这两个关键对象,所有的参数和值都是相同的。

true

示例2: 让我们创建另一个具有不同属性和值的keyObject。比较这两个keyObject。

// Importing the crypto module
const {
    webcrypto: { subtle }, KeyObject
} = require('node:crypto');
 
(async function () {
 
    //  Crypto Key Instance 
    const k1 = await subtle.generateKey({
 
        // Algorithm name
        name: 'AES-CBC',
         
        // Length of key in bits.
        length: 192,
    },
        // Not exportable.
        false,
         
        // Key can be used in encryption
        // and decryption
        ['encrypt', 'decrypt']);
 
    const k2 = await subtle.generateKey(
        {
            name: "HMAC",
            hash: "SHA-256",
            length: 256,
        },
        true,
        ["sign", "verify"]
    );
 
 
    // Creating KeyObject-1:
    const keyObject1 = KeyObject.from(k1);
 
    // Creating KeyObject-2 using same key Instance:
    const keyObject2 = KeyObject.from(k2);
 
    // Comparing both KeyObjects:
    result = keyObject1.equals(keyObject2);
 
    // Printing the result 
    console.log(result);
 
})();

输出: 在上面的示例中,我们使用两个不同的加密密钥实例创建了两个不同的密钥对象。我们使用AES算法生成第一个密钥实例,使用HMAC算法生成第二个密钥实例。两个密钥对象的所有参数和值都不相同,因此此方法返回false。

false

参考: https://nodejs.org/api/crypto.html#keyobjectequalsotherkeyobject

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程