Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

crypto.randomFill() วิธีการใน Node.js


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

ไวยากรณ์

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

พารามิเตอร์

พารามิเตอร์ข้างต้นอธิบายไว้ด้านล่าง −

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

  • ออฟเซ็ต – ค่าออฟเซ็ตจากจุดเริ่มต้นของการเติมแบบสุ่ม ค่าเริ่มต้นคือ 0

  • ขนาด – ขนาดของบัฟเฟอร์หลังออฟเซ็ต เช่น (บัฟเฟอร์.ความยาว-ออฟเซ็ต). ค่านี้ต้องไม่มากกว่า 2**31-1

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

ตัวอย่าง

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

node randomFill.js

randomFill.js

// Node.js program to demonstrate the flow of crypto.randomFill() method

// Importing the crypto module
const crypto = require('crypto');
const fs = require("fs");

// Initialising the buffer bytes value
const buf = Buffer.alloc(6);

// Calling the randomFill method with buffer and a callback
crypto.randomFill(buf, (err, buf) => {
   if (err) throw err;
   // Printing the buffer data value after filling
   console.log(buf.toString('ascii'));
});

//Calling the randomFill with all the parameters defined above
crypto.randomFill(buf, 3, 2, (err, buf) => {
   if (err) throw err;
   // Printing the new random data in buffer
   console.log(buf.toString('base64'));
});

// We can see that the output will be same for below function
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 program to demonstrate the flow of crypto.randomFill() method

// Importing the crypto module
const crypto = require('crypto');
const fs = require("fs");

// Initialising the buffer bytes value using data view
const data = new DataView(new ArrayBuffer(16));

// Calling the randomFill method with buffer and a callback
crypto.randomFill(data, (err, buf) => {
   if (err) throw err;
   // Printing the randomFill data with encoding
   console.log(Buffer.from(buf.buffer,
      buf.byteOffset, buf.byteLength).toString('ascii'));
});

ผลลัพธ์

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