Node.js sign.update(data[, inputEncoding]) 方法
在本文中,我们将讨论NodeJS中crypto模块中的sign类的sign.update()方法。此方法使用给定的数据和输入编码更新签名内容。如果提供的数据对象是缓冲区、TypeArray或DataView,则忽略任何给定的inputEncoding参数。
语法:
sign.update(data, inputEncoding)
参数: 方法有两个以上提到的参数。
- data: 指定的数据类型,可以是字符串、缓冲区、类型数组或数据视图类型。
- inputEncoding: 指定数据的编码类型,是一个可选参数。
返回值: 方法没有返回任何值。
示例1: 在下面的示例中,我们使用console log打印出sign方法,并通过给出data参数来改变sign内容。
const crypto = require('crypto');
const { privateKey, publicKey } =
crypto.generateKeyPairSync('rsa', {
modulusLength: 2048,
});
const sign = crypto.createSign('SHA256');
console.log(sign.update('GeeksforGeeks'));
sign.end();
输出:
Sign {
_writableState: WritableState {
objectMode: false,
highWaterMark: 16384,
finalCalled: false,
needDrain: false,
ending: false,
ended: false,
finished: false,
destroyed: false,
decodeStrings: true,
defaultEncoding: 'utf8',
length: 0,
writing: false,
corked: 0,
sync: true,
bufferProcessing: false,
onwrite: [Function: bound onwrite],
writecb: null,
writelen: 0,
afterWriteTickInfo: null,
buffered: [],
bufferedIndex: 0,
allBuffers: true,
allNoop: true,
pendingcb: 0,
constructed: true,
prefinished: false,
errorEmitted: false,
emitClose: true,
autoDestroy: true,
errored: null,
closed: false,
closeEmitted: false,
[Symbol(kOnFinished)]:
},
_events: [Object: null prototype] {},
_eventsCount: 0,
_maxListeners: undefined,
[Symbol(kHandle)]: Sign {},
[Symbol(kCapture)]: false
}
示例2: 在下面的示例中,我们使用verify.verify()方法验证sign方法的内容。
const crypto = require('crypto');
const { privateKey, publicKey } =
crypto.generateKeyPairSync('rsa', {
modulusLength: 2048,
});
const sign = crypto.createSign('SHA256');
sign.update('GeeksforGeeks');
sign.end();
const signature = sign.sign(privateKey);
const verify = crypto.createVerify('SHA256');
verify.update('GeeksforGeeks')
verify.end();
console.log(verify.verify(publicKey, signature));
输出:
true
参考: https://nodejs.org/api/crypto.html#signupdatedata-inputencoding