เมธอด crypto.randomBytes() สร้างข้อมูลสุ่มแบบ cryptographically strong pseudo-random จะรอจนกว่าจะมี entropy เพียงพอ (ไม่เกินไม่กี่มิลลิวินาที) ใช้สร้าง random bytes สำหรับ key, iv, salt ฯลฯ
ไวยากรณ์
crypto.randomBytes(size, [callback])
พารามิเตอร์
- size – จำนวนไบต์ที่จะสร้าง (ต้องไม่เกิน 2³¹ - 1)
- callback – callback เมื่อเกิดข้อผิดพลาด (สำหรับโหมด asynchronous)
ตัวอย่าง: Asynchronous
const crypto = require('crypto');
crypto.randomBytes(64, (err, buf) => {
if (err) throw err;
console.log(`${buf.length} bytes of random data: ${buf.toString('hex')}`);
});
ผลลัพธ์
64 bytes of random data: eb2bcebb999407286caea729998e7fa0c089178f8ca43857e73ea3ff66dbe1852af24a4b0199be9192798a3f8ad6d6475db3621cfacf38dcb0fba5d77d73aaf5
ตัวอย่าง: Synchronous
const crypto = require('crypto');
const buffer = crypto.randomBytes(256);
console.log(`${buffer.length} bytes of random data: ${buffer.toString('base64')}`);
ผลลัพธ์
256 bytes of random data: n7yfRMo/ujHfBWSF2VFdevG4WRbBoG9Fqwu51+/9ZBUV6Qo88YG7IbcEaIer+g+OgjMv4RyNQ6/67aF5xWmkOR3oA6J6bdAJ1pbstTuhIfItF1PQfP26YXk1QlaoKy/YJxPUngyK4kNG9O04aret4D+2qIq9BUaQcv+R9Xi014VKNUDZ+YQKEaLHBhJMq6JgehJ56iNbdNJ4+PN7SQwjNdZ8gS76izAwYsSZ7Kuyx2VzdXIKsLmjleuJ2DZ7/6Yyn8WM9463dhuh0KQ5nwFbgzucvjmdvDjBlGFZBGlKs6AXqYh+0Oe6Ckkv3OpnXOJs+GExbmnvjaeDQ03khpdJfA==