- 继承自: {stream.Writable}
Sign
类是一个实用工具,用于生成签名。
它可以通过以下两种方式之一使用:
- 作为可写的[流][stream],其中写入要签名的数据,并使用 [
sign.sign()
] 方法生成和返回签名。 - 使用 [
sign.update()
] 和 [sign.sign()
] 方法生成签名。
[crypto.createSign()
] 方法用于创建 Sign
实例。
参数是要使用的哈希函数的字符串名称。
不能使用 new
关键字直接地创建 Sign
对象。
示例,使用 Sign
和 [Verify
] 对象作为流:
const crypto = require('crypto');
const { privateKey, publicKey } = crypto.generateKeyPairSync('ec', {
namedCurve: 'sect239k1'
});
const sign = crypto.createSign('SHA256');
sign.write('要生成签名的数据');
sign.end();
const signature = sign.sign(privateKey, 'hex');
const verify = crypto.createVerify('SHA256');
verify.write('要生成签名的数据');
verify.end();
console.log(verify.verify(publicKey, signature, 'hex'));
// 打印 true
示例,使用 [sign.update()
] 和 [verify.update()
] 方法:
const crypto = require('crypto');
const { privateKey, publicKey } = crypto.generateKeyPairSync('rsa', {
modulusLength: 2048,
});
const sign = crypto.createSign('SHA256');
sign.update('要生成签名的数据');
sign.end();
const signature = sign.sign(privateKey);
const verify = crypto.createVerify('SHA256');
verify.update('要生成签名的数据');
verify.end();
console.log(verify.verify(publicKey, signature));
// 打印: true