เมธอด crypto.createVerify() จะสร้างและคืนค่าออบเจ็กต์ verify ที่ใช้อัลกอริทึมที่ส่งผ่านพารามิเตอร์ สามารถใช้ crypto.getHashes() เพื่อดูชื่ออัลกอริทึมการลงนามทั้งหมดที่รองรับ สามารถสร้างอินสแตนซ์ Verify ได้โดยใช้ชื่ออัลกอริทึมลายเซ็น เช่น 'RSA-SHA256' ในบางกรณี แทนที่จะใช้อัลกอริทึมด이제สต์ (digest algorithm)
ไวยากรณ์
crypto.createVerify(algorithm, [options])
พารามิเตอร์
พารามิเตอร์ข้างต้นอธิบายดังนี้:
algorithm – รับชื่ออัลกอริทึมที่จะใช้ในการสร้างออบเจ็กต์/อินสแตนซ์ verify
options – พารามิเตอร์ตัวเลือกที่ใช้ควบคุมพฤติกรรมสตรีม (stream behavior)
ตัวอย่าง
สร้างไฟล์ชื่อ createVerify.js และคัดลอกโค้ดด้านล่าง หลังจากสร้างไฟล์แล้ว ใช้คำสั่งต่อไปนี้เพื่อรันโค้ด:
node createVerify.js
createVerify.js
// โปรแกรม Node.js สาธิตการใช้เมธอด createVerify()
// นำเข้าโมดูล crypto
const crypto = require('crypto');
// สร้างออบเจ็กต์ verify ด้วยอัลกอริทึมที่ระบุ
const verify = crypto.createVerify('SHA256');
// คืนค่าออบเจ็กต์ verify
console.log(verify);
ผลลัพธ์
C:\home\node>> node createVerify.js
Verify {
_handle: {},
_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,
bufferedRequest: null,
lastBufferedRequest: null,
pendingcb: 0,
prefinished: false,
errorEmitted: false,
emitClose: true,
autoDestroy: false,
bufferedRequestCount: 0,
corkedRequestsFree: {
next: null,
entry: null,
finish: [Function: bound onCorkedFinish]
}
},
writable: true,
_events: [Object: null prototype] {},
_eventsCount: 0,
_maxListeners: undefined
}
ตัวอย่างเพิ่มเติม
ลองดูตัวอย่างอีกหนึ่งกรณี:
// โปรแกรม Node.js สาธิตการใช้เมธอด createVerify()
// นำเข้าโมดูล crypto
const crypto = require('crypto');
// สร้างออบเจ็กต์ verify จากอัลกอริทึม SHA256
const verify = crypto.createVerify('SHA256');
// เขียนข้อมูลที่จะลงนามและตรวจสอบ
verify.write('TutorialPoint');
// จบการเขียน
verify.end();
// เริ่มต้นการทำงานของกุญแจสาธารณะ
const l1 = "-----BEGIN PUBLIC KEY-----\n";
// ข้อมูลที่เข้ารหัส
const l2 = "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEXIvPbzLjaPLd8jgiv1TL/X8PXpJNgDkGRj9U9Lcx1yKURpQFVavcMkfWyO8r7JlZNMax0JKfLZUM1IePRjHlFw==";
// จบการทำงานของกุญแจสาธารณะ
const l3 = "\n-----END PUBLIC KEY-----";
// รวมกุญแจสาธารณะทั้งหมด
const publicKey = l1 + l2 + l3;
// ลายเซ็นที่จะตรวจสอบ
const signature = "MEYCIQCPfWhpzxMqu3gZWflBm5V0aetgb2/S+SGyGcElaOjgdgIhALaD4lbxVwa8HUUBFOLz+CGvIioDkf9oihSnXHCqh8yV";
// แสดง true ถ้าลายเซ็นถูกต้อง ไม่เช่นนั้น false
console.log(verify.verify(publicKey, signature));
ผลลัพธ์
C:\home\node>> node createVerify.js false