bcrypt เป็นไลบรารีที่ใช้ใน Node.js เพื่อทำการแฮช (hash) รหัสผ่านของผู้ใช้หรือข้อมูลที่ต้องการปกปิด โดยที่การแฮชด้วย bcrypt จะมีการเพิ่มความปลอดภัยเมื่อเปรียบเทียบรหัสผ่านและการเก็บข้อมูลในฐานข้อมูลเนื่องจากการแฮช bcrypt จะทำให้สามารถต้านการโจมตีแบบ Brute Force และการ Rainbow Table Attack ได้.
ตัวอย่างการใช้ bcrypt ใน Node.js:
ติดตั้ง bcrypt:
1
npm install bcrypt
นำเข้า bcrypt:
1
const bcrypt = require('bcrypt');
สร้างและเข้ารหัสรหัสผ่าน:
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
33const 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 ของรหัสผ่านในฐานข้อมูลอย่างปลอดภัย เพื่อป้องกันการรั่วไหลของข้อมูล.