Node.js 中 crypto 模块的 keyObject.equals(),它允许您比较两个 key 对象。默认情况下,此方法返回一个布尔值,指示传递的 keyObject 是否等于该方法应用到的 key 对象。该方法根据键的类型、值和参数做出决策。
句法:
keyObject.equals(KeyObject);
返回值:此方法返回一个布尔值,指示传递的 keyObject 是否等于该方法所应用的 key 对象。
我们现在将看到 keyObject.equals(otherKeyObject) 方法的一些示例。
示例 1:让我们再创建一个具有相同算法和属性的 keyObject,并使用 keyObject.equals() 方法将上面的 keyObject 与新创建的 keyObject 进行比较。
Javascript
// 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);
})();
输出:在上面的示例中,使用相同的加密 key 实例创建了两个 key 对象。然后我应用 keyObject.equals() 方法来检查两个关键对象是否相等。结果为 true,因为两个 keyObject 都是使用相同的加密 key 实例生成的。两个关键对象的所有参数和值都相同。
true
示例 2:让我们再创建一个具有不同属性和值的 keyObject。比较两个 keyObject。
Javascript
// 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);
})();
输出:在上面的示例中,我们使用两个不同的加密 key 实例创建了两个不同的 key 对象。我们使用 AES 算法生成第一个加密 key 实例,使用 HMAC 算法生成第二个 key 实例。两个关键对象的所有参数和值都不同,因此此方法返回 false。
false
参考: https://nodejs.org/api/crypto.html#keyobjectequalsotherkeyobject
相关用法
- Node.js keyObject.symmetricKeySize用法及代码示例
- Node.js keyObject.asymmetricKeyDetails用法及代码示例
- Node.js keyObject.asymmetricKeyType用法及代码示例
- 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.equals() Method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。