當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Node.js diffieHellman.verifyError用法及代碼示例


NodeJs 加密模塊允許我們使用加密算法來保護機密信息。 Diffie-Hellman 也是用於在兩個實體(發送方/接收方)之間安全共享 key 的加密算法之一。

Diffie-Hellman 算法基於大素數 (P) 和生成器 (G)。 P的原根是G。

原根:設 G 是素數 P 的原根,則 - G 是 [ 1, P - 1 ] 之間的整數,X 是 [ 1, P - 2 ] 之間的整數,因此 G X mod P 的值不同每個 X 值。

NodeJS diffieHellman.verifyError:由於初始化期間執行的檢查而包含警告或錯誤的位字段。該方法指示Diffie-Hellman對象初始化過程中是否出現錯誤。

如果出現錯誤,則該位值將根據錯誤類型而定,否則將為 0。

以下是決定 diffieHellman.verifyError 值的屬性:

DH_CHECK_P_NOT_SAFE_PRIME: 2,
DH_CHECK_P_NOT_PRIME: 1,
DH_UNABLE_TO_CHECK_GENERATOR: 4,
DH_NOT_SUITABLE_GENERATOR: 8,
  • 如果diffieHellman.verifyError方法返回2意味著指定的素數不是安全素數。
  • 如果diffieHellman.verifyError方法返回1,則表示該數字不是質數。
  • 如果diffieHellman.verifyError方法返回4,則表示讀取生成器值時出現錯誤。
  • 如果diffieHellman.verifyError方法返回8,則表示所使用的生成器不適合生成具有指定素數的Diffie-Hellman key 對象。

這些數值已在 crypto.constants 對象中為每種類型的錯誤定義。

讓我們使用 createDiffieHellman() 方法創建一個 Diffie-Hellman 對象。以下是創建的語法

Diffie-Hellman key 交換對象:

crypto.createDiffieHellman( prime, primeEncoding,
    generator, generatorEncoding )

參數:

  • Prime:可以包含 String、Buffer、TypedArray 或 DataView 類型的元素。
  • primeEncoding:這是素數字符串編碼,屬於字符串類型。
  • Generator:可以包含數字、字符串、緩衝區、TypedArray 或DataView 數據。默認值為 2。
  • generatorEncoding:這是生成器字符串的編碼並返回一個字符串。

返回:返回Diffie-Hellman key 交換對象。

以下是diffieHellman.verifyError方法的語法:

diffieHellman_object_name.verifyError

Parameters: 沒有參數,它是一個屬性,而不是一個函數。

返回:一個號碼.

示例 1:DH_CHECK_P_NOT_SAFE_PRIME:2

在此示例中,我們將根據素數和生成器值創建 Diffie-Hellman 對象。在這種情況下,指定的素數 ( 61 ) 不是安全素數,我們嘗試使用 diffieHellman_object_name.verifyError 屬性獲取與此不安全素數的 DH_CHECK_P_NOT_SAFE_PRIME key 相對應的錯誤值 (2)。

正如我們所討論的,如果 diffieHellman.verifyError 方法返回值 2,則表明指定的素數不是安全素數。

Javascript


// Importing the required Crypto module
const crypto = require('node:crypto');
// Creating the diffieHellman object -
    // createDiffieHellman( prime, generator )
const bob = crypto.createDiffieHellman('61',2);
// verifying the Error value -
console.log(bob.verifyError);

輸出:

2

示例 2:DH_CHECK_P_NOT_PRIME:1

如果指定的 P 不是實際素數,則該屬性將返回 1。

在此示例中,我們將數字 82 傳遞給 createDiffieHellman() 方法,該方法不是素數。我們的目標是使用 diffieHellman_object_name.verifyError 屬性實現與 DH_CHECK_P_NOT_PRIME key 相對應的錯誤值 1。

Javascript


// Importing the required Crypto module
const crypto = require('node:crypto');
// Creating the diffieHellman object -
    // createDiffieHellman( prime, generator )
const bob = crypto.createDiffieHellman('82',2);
// verifying the Error value -
console.log(bob.verifyError);

輸出:

1

示例 3:DH_NOT_SUITABLE_GENERATOR:8,

在此示例中,我們傳遞 2 作為素數,傳遞 50 作為生成器。 50 並不是素數 2 創建 Diffie-Hellman 對象的完美生成器匹配。我們的目的是獲取與 DH_NOT_SUITABLE_GENERATOR 鍵對應的錯誤值 (8),因為 50 不是合適的生成器。

如果生成器不適合指定的質數並生成 Diffie-Hellman 對象,則該屬性將返回 8。

Javascript


// Importing the required Crypto module
const crypto = require('node:crypto');
// Creating the diffieHellman object -
    // createDiffieHellman( prime, generator )
const bob = crypto.createDiffieHellman(2,50);
// verifying the Error value -
console.log(bob.verifyError);

輸出:

8

示例 4:如果沒有錯誤 - 0

在此示例中,我們的目標是獲得誤差值 (0)。這個0表示Diffie-Hellman對象的創建沒有錯誤。 2 是質數,7 是合適的生成器,因此 Diffie-Hellman 對象將被創建而不會出現任何錯誤。

Javascript


// Importing the required Crypto module
const crypto = require('node:crypto');
// Creating the diffieHellman object -
    // createDiffieHellman( prime, generator )
const bob = crypto.createDiffieHellman(7,2);
// verifying the Error value -
console.log(bob.verifyError);

輸出:

0

參考:https://nodejs.org/api/crypto.html



相關用法


注:本文由純淨天空篩選整理自harishcarpenter大神的英文原創作品 Node.js diffieHellman.verifyError Property。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。