nodejs ตัวอย่าง bcrypt

bcrypt เป็นไลบรารีที่ใช้ใน Node.js เพื่อทำการแฮช (hash) รหัสผ่านของผู้ใช้หรือข้อมูลที่ต้องการปกปิด โดยที่การแฮชด้วย bcrypt จะมีการเพิ่มความปลอดภัยเมื่อเปรียบเทียบรหัสผ่านและการเก็บข้อมูลในฐานข้อมูลเนื่องจากการแฮช bcrypt จะทำให้สามารถต้านการโจมตีแบบ Brute Force และการ Rainbow Table Attack ได้.

ตัวอย่างการใช้ bcrypt ใน Node.js:

  1. ติดตั้ง bcrypt:

    1
    npm install bcrypt
  2. นำเข้า bcrypt:

    1
    const bcrypt = require('bcrypt');
  3. สร้างและเข้ารหัสรหัสผ่าน:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    const plaintextPassword = 'mySecurePassword';

    // สร้าง salt สำหรับการเข้ารหัส
    bcrypt.genSalt(10, (err, salt) => {
    if (err) {
    console.error('Error generating salt:', err);
    return;
    }

    // เข้ารหัสรหัสผ่านโดยใช้ salt
    bcrypt.hash(plaintextPassword, salt, (err, hash) => {
    if (err) {
    console.error('Error hashing password:', err);
    return;
    }

    console.log('Hashed Password:', hash);

    // ตรวจสอบรหัสผ่าน
    bcrypt.compare(plaintextPassword, hash, (err, isMatch) => {
    if (err) {
    console.error('Error comparing passwords:', err);
    return;
    }

    if (isMatch) {
    console.log('Password is correct.');
    } else {
    console.log('Password is incorrect.');
    }
    });
    });
    });

ในตัวอย่างนี้:

  • bcrypt.genSalt() ใช้สร้าง salt สำหรับการเข้ารหัส ซึ่งคือข้อมูลสุ่มที่ใช้ร่วมกับรหัสผ่านในการเข้ารหัส.
  • bcrypt.hash() ใช้เข้ารหัสรหัสผ่านโดยใช้ salt ที่สร้างขึ้น และสร้าง hash ของรหัสผ่าน.
  • bcrypt.compare() ใช้เปรียบเทียบรหัสผ่านที่รับมากับ hash ที่เก็บไว้ในฐานข้อมูล เพื่อตรวจสอบว่ารหัสผ่านถูกต้องหรือไม่.

การใช้ bcrypt เป็นวิธีที่ปลอดภัยและแนะนำสำหรับการจัดการรหัสผ่านในแอปพลิเคชัน Node.js ควรระมัดระวังในการเก็บ salt และ hash ของรหัสผ่านในฐานข้อมูลอย่างปลอดภัย เพื่อป้องกันการรั่วไหลของข้อมูล.