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
相关用法
- Node.js diffieHellman.getPrime()用法及代码示例
- Node.js diffieHellman.setPrivateKey()用法及代码示例
- Node.js diffieHellman.getPublicKey()用法及代码示例
- Node.js diffieHellman.generateKeys()用法及代码示例
- Node.js diffieHellman.computeSecret()用法及代码示例
- Node.js diffieHellman.getGenerator()用法及代码示例
- Node.js diffieHellman.setPublicKey()用法及代码示例
- Node.js diffieHellman.getPrivateKey()用法及代码示例
- Node.js diagnostics_channel.hasSubscribers(name)用法及代码示例
- Node.js diagnostics_channel.channel(name)用法及代码示例
- Node.js dns.getServers()用法及代码示例
- Node.js dns.lookup()用法及代码示例
- Node.js dns.lookupService()用法及代码示例
- Node.js dns.resolve()用法及代码示例
- Node.js dns.resolve4()用法及代码示例
- Node.js dns.resolve6()用法及代码示例
- Node.js dns.resolveAny()用法及代码示例
- Node.js dns.resolveCname()用法及代码示例
- Node.js dns.resolveMx()用法及代码示例
- Node.js dns.resolveNaptr()用法及代码示例
- Node.js dns.resolveNs()用法及代码示例
- Node.js dns.resolvePtr()用法及代码示例
- Node.js dns.resolveSoa()用法及代码示例
- Node.js dns.resolveTxt()用法及代码示例
- Node.js dnsPromises.getServers()用法及代码示例
注:本文由纯净天空筛选整理自harishcarpenter大神的英文原创作品 Node.js diffieHellman.verifyError Property。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。