📅  最后修改于: 2023-12-03 15:03:12.542000             🧑  作者: Mango
crypto.verify()
是Node.js中的一个内置模块,它通过数字签名验证提供了一个逆向操作,以确保一个消息是由指定的私钥持有者签名而不是伪造的。
crypto.verify(algorithm, data, key, signature, [encoding])
参数含义:
algorithm
: String 类型,指定用于签名和验证消息的哈希算法,如"MD5"、"SHA256"等。data
: Buffer | DataView | TypedArray | DataURI | String 类型,待验证的数据。key
: String | Buffer | TypedArray | KeyObject 类型,公钥。signature
: Buffer | DataView | TypedArray | String 类型,要验证的签名数据。encoding
: String 类型,可选的。用来指定签名和消息数据的编码方式,如"utf8"、"base64"等。下面给出一个例子:
const crypto = require('crypto');
// 生成密钥对
const { privateKey, publicKey } = crypto.generateKeyPairSync('rsa', {
modulusLength: 2048
});
// 待签名数据
const data = 'Hello World';
// 签名
const sign = crypto.sign('sha256', Buffer.from(data), privateKey);
// 验证签名
const isVerified = crypto.verify('sha256', Buffer.from(data), publicKey, sign);
console.log(`签名验证结果: ${isVerified}`);
该程序生成了一个2048位的RSA密钥对,并使用PrivateKey对象对数据进行签名。然后使用公钥公开签名验证操作。
输出结果:
签名验证结果: true
sign()
和verify()
方法实现。