Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

เมธอด crypto.randomFill() ใน Node.js

ทั้งเมธอด crypto.randomFill() และ crypto.randomBytes() มีลักษณะการทำงานคล้ายกันมาก ความแตกต่างเดียวคือ – ในเมธอด randomFill() อาร์กิวเมนต์แรกคือบัฟเฟอร์ที่จะถูกเติม ยังมีเมธอด callback ที่จะถูกเรียกเมื่อพบข้อผิดพลาด หากมีการกำหนด callback

ไวยากรณ์

crypto.randomFill(buffer, [offset], [size], [callback])

พารามิเตอร์

พารามิเตอร์ข้างต้นอธิบายดังนี้:

  • buffer – ฟิลด์นี้มีเนื้อหาข้อมูล ประเภทบัฟเฟอร์ที่เป็นไปได้: string, TypedArray, Buffer, ArrayBuffer, DataView ขนาดบัฟเฟอร์ไม่สามารถมากกว่า 2**31-1 ได้

  • offset – ค่าของออฟเซ็ตที่ randomFill จะเริ่มต้น ค่าเริ่มต้นคือ 0

  • size – ขนาดของบัฟเฟอร์หลังออฟเซ็ต คือ (buffer.length - offset) ค่านี้ไม่สามารถมากกว่า 2**31-1 ได้

  • callback – ฟังก์ชันที่จะถูกเรียกเมื่อมีข้อผิดพลาดเกิดขึ้น

ตัวอย่าง

สร้างไฟล์ชื่อ randomFill.js และคัดลอกโค้ดด้านล่าง หลังจากสร้างไฟล์แล้ว ใช้คำสั่งต่อไปนี้เพื่อรันโค้ด:

node randomFill.js

randomFill.js

// โปรแกรม Node.js สาธิตการทำงานของเมธอด crypto.randomFill()
// นำเข้าโมดูล crypto
const crypto = require('crypto');
const fs = require("fs");
// เริ่มต้นค่าบัฟเฟอร์ไบต์
const buf = Buffer.alloc(6);
// เรียกเมธอด randomFill ด้วยบัฟเฟอร์และ callback
crypto.randomFill(buf, (err, buf) => {
    if (err) throw err;
    // แสดงค่าข้อมูลบัฟเฟอร์หลังเติมแล้ว
    console.log(buf.toString('ascii'));
});
// เรียก randomFill ด้วยพารามิเตอร์ทั้งหมดที่กำหนด
crypto.randomFill(buf, 3, 2, (err, buf) => {
    if (err) throw err;
    // แสดงข้อมูลสุ่มใหม่ในบัฟเฟอร์
    console.log(buf.toString('base64'));
});
// สามารถเห็นได้ว่าผลลัพธ์จะเหมือนกันสำหรับฟังก์ชันด้านล่าง
crypto.randomFill(buf, 3, 3, (err, buf) => {
    if (err) throw err;
    console.log(buf.toString('base64'));
});

ผลลัพธ์

C:\home\node>> node randomFill.js
f!]"+– 
ZqHdoit8
ZqHdoit8

ตัวอย่างเพิ่มเติม

ลองดูตัวอย่างอีกหนึ่งกรณี:

// โปรแกรม Node.js สาธิตการทำงานของเมธอด crypto.randomFill()
// นำเข้าโมดูล crypto
const crypto = require('crypto');
const fs = require("fs");
// เริ่มต้นค่าบัฟเฟอร์ไบต์โดยใช้ DataView
const data = new DataView(new ArrayBuffer(16));
// เรียกเมธอด randomFill ด้วยบัฟเฟอร์และ callback
crypto.randomFill(data, (err, buf) => {
    if (err) throw err;
    // แสดงข้อมูล randomFill พร้อมการเข้ารหัส
    console.log(Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength).toString('ascii'));
});

ผลลัพธ์

C:\home\node>> node randomFill.js
>h(Be#D8h0