• 继承自: {stream.Writable}

    Sign 类是一个实用工具,用于生成签名。 它可以通过以下两种方式之一使用:

    • 作为可写的[流][stream],其中写入要签名的数据,并使用 [sign.sign()] 方法生成和返回签名。
    • 使用 [sign.update()] 和 [sign.sign()] 方法生成签名。

    [crypto.createSign()] 方法用于创建 Sign 实例。 参数是要使用的哈希函数的字符串名称。 不能使用 new 关键字直接地创建 Sign 对象。

    示例,使用 Sign 和 [Verify] 对象作为流:

    1. const crypto = require('crypto');
    2. const { privateKey, publicKey } = crypto.generateKeyPairSync('ec', {
    3. namedCurve: 'sect239k1'
    4. });
    5. const sign = crypto.createSign('SHA256');
    6. sign.write('要生成签名的数据');
    7. sign.end();
    8. const signature = sign.sign(privateKey, 'hex');
    9. const verify = crypto.createVerify('SHA256');
    10. verify.write('要生成签名的数据');
    11. verify.end();
    12. console.log(verify.verify(publicKey, signature, 'hex'));
    13. // 打印 true

    示例,使用 [sign.update()] 和 [verify.update()] 方法:

    1. const crypto = require('crypto');
    2. const { privateKey, publicKey } = crypto.generateKeyPairSync('rsa', {
    3. modulusLength: 2048,
    4. });
    5. const sign = crypto.createSign('SHA256');
    6. sign.update('要生成签名的数据');
    7. sign.end();
    8. const signature = sign.sign(privateKey);
    9. const verify = crypto.createVerify('SHA256');
    10. verify.update('要生成签名的数据');
    11. verify.end();
    12. console.log(verify.verify(publicKey, signature));
    13. // 打印: true