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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。